diff options
Diffstat (limited to 'extension/curlmanager.h')
-rw-r--r-- | extension/curlmanager.h | 48 |
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 + |