aboutsummaryrefslogtreecommitdiff
path: root/extension/curlmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'extension/curlmanager.h')
-rw-r--r--extension/curlmanager.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/extension/curlmanager.h b/extension/curlmanager.h
new file mode 100644
index 0000000..f1362a4
--- /dev/null
+++ b/extension/curlmanager.h
@@ -0,0 +1,48 @@
+#ifndef _INCLUDE_SOURCEMOD_EXTENSION_CURLMANAGER_H_
+#define _INCLUDE_SOURCEMOD_EXTENSION_CURLMANAGER_H_
+
+#include "extension.h"
+#include "curlthread.h"
+
+class cURLManager
+{
+public:
+ void SDK_OnLoad();
+ void SDK_OnUnload();
+
+public:
+ void CreatecURLThread(cURLThread *thread);
+ void RemovecURLThread(cURLThread *thread);
+
+public:
+ void RemovecURLHandle(cURLHandle *handle);
+ bool AddcURLOptionString(cURLHandle *handle, CURLoption opt, char *value);
+ bool AddcURLOptionInt(cURLHandle *handle, CURLoption opt, int value);
+ bool AddcURLOptionInt64(cURLHandle *handle, CURLoption opt, long long value);
+ bool AddcURLOptionHandle(IPluginContext *pContext, cURLHandle *handle, HandleSecurity *sec, CURLoption opt, Handle_t hndl);
+ bool AddcURLOptionFunction(IPluginContext *pContext, cURLHandle *handle, CURLoption opt, IPluginFunction *pFunction, int value);
+ void LoadcURLOption(cURLHandle *handle);
+
+private:
+ void RemoveLinkedICloseHelper(cURLHandle *handle);
+
+public:
+ CURLFORMcode cURLFormAdd(IPluginContext *pContext, const cell_t *params, WebForm *handle);
+
+public:
+ void AddCloseHelperHandle(ICloseHelper *helper);
+ void RemoveCloseHelperHandle(ICloseHelper *helper);
+
+private:
+ bool waiting;
+ IMutex *curlhandle_list_mutex;
+ IMutex *closehelper_list_mutex;
+ IEventSignal *shutdown_event;
+ SourceHook::List<cURLThread *> g_cURLThread_List;
+ SourceHook::List<ICloseHelper *> g_CloseHelper_List;
+};
+
+extern cURLManager g_cURLManager;
+
+#endif
+