aboutsummaryrefslogtreecommitdiff
path: root/extension/curlthread.h
diff options
context:
space:
mode:
Diffstat (limited to 'extension/curlthread.h')
-rw-r--r--extension/curlthread.h49
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
+