aboutsummaryrefslogtreecommitdiff
path: root/curlmanager.h
diff options
context:
space:
mode:
authorstephanie sappho lenzo <sappho@sappho.io>2023-07-13 06:11:48 -0400
committerstephanie sappho lenzo <sappho@sappho.io>2023-07-13 06:11:48 -0400
commitd643bdb4bd5cda1bed5c8de79de456782c785dff (patch)
tree014d40ad802c2495ee36212be40dab75c623d754 /curlmanager.h
inital commit
Diffstat (limited to 'curlmanager.h')
-rw-r--r--curlmanager.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/curlmanager.h b/curlmanager.h
new file mode 100644
index 0000000..f1362a4
--- /dev/null
+++ b/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
+