aboutsummaryrefslogtreecommitdiff
path: root/curlthread.h
blob: ddb0c578594a8f84715700cb11593f453052782f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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