diff options
Diffstat (limited to 'extension/curlthread.h')
-rw-r--r-- | extension/curlthread.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/extension/curlthread.h b/extension/curlthread.h new file mode 100644 index 0000000..ddb0c57 --- /dev/null +++ b/extension/curlthread.h @@ -0,0 +1,49 @@ +#ifndef _INCLUDE_SOURCEMOD_EXTENSION_CURLTHREAD_H_ +#define _INCLUDE_SOURCEMOD_EXTENSION_CURLTHREAD_H_ + +#include "extension.h" +#include "curlmanager.h" +#include <curl/curl.h> + + +class cURLThread : public IThread +{ + friend class cURLManager; + +public: + cURLThread(cURLHandle *_handle, cURLThread_Type _type); + ~cURLThread(); + cURLHandle *GetHandle(); + cURLThread_Type GetRunType(); + void EventSignal(); + void EventWait(); + bool IsWaiting(); + char *GetReceiveBuffer(); + void SetRecvBufferSize(unsigned int size); + void SetSenRecvAction(SendRecv_Act act); + +public: + void RunThread(IThreadHandle *pHandle); + void OnTerminate(IThreadHandle *pHandle, bool cancel); + +public: + void RunThread_Perform(); + void RunThread_Send_Recv(); + +private: + bool waiting; + cURLHandle *handle; + cURLThread_Type type; + IEventSignal *event; + char *recv_buffer; + unsigned int recv_buffer_size; + unsigned int _current_recv_buffer_size; + SendRecv_Act send_recv_act; + +public: + size_t last_iolen; +}; + + +#endif + |