#ifndef SOH_HANDLER__H_ #define SOH_HANDLER__H_ #ifdef _WIN32 #pragma once #endif // size only in header class HSohHandler : public HProtocolHandler { public: enum { HH_SOH_MAX_COMMAND_PACKET_SIZE = 65536 }; HSohHandler(); ~HSohHandler(); int SendPacket(const char * pData, size_t nSize); // for zero copy char * GetSBufPtr() { return m_pSendBuffer->Tail(); } size_t GetSBufSize() { return m_pSendBuffer->RemainSize(); } bool MarkUsedSBuf(size_t nSize) { return m_pSendBuffer->MoveTail(nSize); } int SendBufferedPacket(); protected: int SendBufferCommand(); void OnReceivedStatusFromTransport(int nStatus); int OnReceivedFromTransport(const char * pData, int nSize); int OnSendRetryToTransport(); bool OnPrepareReceive() { return true; } virtual void OnInitialize(bool bIsSuccess) = 0; virtual void OnTerminate() = 0; virtual int OnReceivedBody(const char * pBody, int nSize) = 0; protected: HStreamBuffer * m_pRecvBuffer; size_t m_nBodySize; HStreamBuffer * m_pSendBuffer; }; #endif // REDUNDANCY__H_