77 lines
3.4 KiB
C++
77 lines
3.4 KiB
C++
#pragma once
|
||
|
||
#include "ClientSession.h"
|
||
|
||
enum SocketError
|
||
{
|
||
ON_CONNECT = 1,
|
||
ON_CLOSE,
|
||
ON_WRITE,
|
||
ON_READ,
|
||
ON_CONNECT_ERROR = 11,
|
||
ON_CLOSE_ERROR,
|
||
ON_WRITE_ERROR,
|
||
ON_READ_ERROR,
|
||
};
|
||
|
||
class CSeqReceiver;
|
||
class CClientSocket : public CClientSession
|
||
{
|
||
private:
|
||
bool m_bConnected;
|
||
bool m_bWrite;
|
||
bool m_bThreadClose;
|
||
|
||
CSeqReceiver * m_pReceiver;
|
||
char* m_pTempBuffer;
|
||
int m_iTempBufferSize;
|
||
|
||
protected:
|
||
HANDLE m_hEvent;
|
||
HANDLE m_hThread;
|
||
HANDLE m_hTerminateEvent;
|
||
DWORD m_dwThreadExitCode;
|
||
bool m_bRunning;
|
||
|
||
std::string m_szServerIP;
|
||
USHORT m_nServerPort;
|
||
|
||
void DoSend();
|
||
bool CreateRecvThread();
|
||
void DestroyRecvThread();
|
||
|
||
virtual void OnConnect();
|
||
virtual void OnDisconnect( bool bValidDisconnect );
|
||
virtual void OnRecv();
|
||
virtual void OnSend();
|
||
virtual void OnError(int nError);
|
||
|
||
int ThreadUpdate();
|
||
static UINT __stdcall RecvThread(void *pParam);
|
||
|
||
public:
|
||
CClientSocket(void);
|
||
CClientSocket(int nSize);
|
||
~CClientSocket(void);
|
||
|
||
HANDLE GetTerminateEvent() { return m_hTerminateEvent; }
|
||
void SetReceiver(CSeqReceiver * pReceiver) { m_pReceiver = pReceiver; }
|
||
|
||
void Init();
|
||
void Clear();
|
||
|
||
bool Connect(const char *pIp, const USHORT nPort);
|
||
void Close(bool boGraceful = true, bool bValidDisconnect = false);
|
||
|
||
int AddSendData(int iMainCmd, int iSubCmd, char *pData, int iLen, int nInsertAfter = -1);
|
||
int AddRecvData(int iMainCmd, int iSubCmd, char *pData, int iLen, int nInsertAfter = -1);
|
||
|
||
virtual int DoUpdate();
|
||
|
||
const char *GetServerIP() { return m_szServerIP.c_str(); }
|
||
USHORT GetServerPort() { return m_nServerPort; }
|
||
|
||
inline bool Connected() { return m_bConnected; }
|
||
|
||
CClientSocket &operator = ( CClientSocket &e );
|
||
};
|