60 lines
1.2 KiB
C++
60 lines
1.2 KiB
C++
|
|
#ifndef VSP_HANDLER__H_
|
|
#define VSP_HANDLER__H_
|
|
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
|
|
#define EXTRACT_NEXT_PARAM(VALIABLE, NEXT, SIZE, OFFSET) \
|
|
if ((OFFSET = VALIABLE.Tokenize(NEXT, SIZE, ' ')) <= 1) { \
|
|
if (SIZE > 0) { VALIABLE.Assign(NEXT, SIZE); OFFSET = SIZE; } \
|
|
else { HLOGF(HLOG_ERROR, "[ERROR], Invalid param, %s\n", NEXT); \
|
|
return -1; } } \
|
|
NEXT += OFFSET; SIZE -= OFFSET;
|
|
|
|
|
|
|
|
class HVspHandler : public HProtocolHandler
|
|
{
|
|
public:
|
|
enum
|
|
{
|
|
//HH_VSP_MAX_COMMAND_PACKET_SIZE = 8192
|
|
HH_VSP_MAX_COMMAND_PACKET_SIZE = 65536
|
|
};
|
|
|
|
HVspHandler();
|
|
~HVspHandler();
|
|
|
|
int SendCommand(const HString & strCommand);
|
|
int SendBinary(const char * pData, size_t nSize);
|
|
|
|
protected:
|
|
int SendBufferCommand();
|
|
|
|
void OnReceivedStatusFromTransport(int nStatus);
|
|
int OnReceivedFromTransport(const char * pData, int nSize);
|
|
int ProcPacketBodyReceive();
|
|
|
|
int OnSendRetryToTransport();
|
|
bool OnPrepareReceive();
|
|
|
|
virtual void OnInitialize(bool bIsSuccess) = 0;
|
|
virtual void OnTerminate() = 0;
|
|
virtual int OnReceivedCommand(const char * pPacket, int nSize) = 0;
|
|
|
|
protected:
|
|
HStreamBuffer * m_pRecvBuffer;
|
|
int m_nBodyOffset;
|
|
long m_nBodySize;
|
|
long m_nRemainBodySize;
|
|
|
|
HStreamBuffer * m_pSendBuffer;
|
|
};
|
|
|
|
|
|
#endif // REDUNDANCY__H_
|
|
|