#pragma once #include "akNetworkLinker.h" #include #include "akThread.h" #include "akPacketStorage.h" class AKNETWORK_DLLSPEC CakPIPEClient : public CakThreadInterface { public: typedef void (*SystemMsgFunc) (char* pMsg, int nMsglen, void*); public: CakPIPEClient(void); ~CakPIPEClient(void); void setServerName(char* pServerName); // ½Ã½ºÅÛ ¸Þ¼¼Áö ¼ö½Å ÄÝ¹é ¼³Á¤ void SetSystemMessageCallback(SystemMsgFunc userFunc, void* data = NULL); // ¸Þ¼¼Áö Àü¼Û bool Send(char* pSend, int nLen); bool SendForce(char* pSend, int nLen, int nWaitTimeMS=0); bool SendLarge(char* pSend, long nLen, int nWaitTimeMS=0); protected: void setSystemMsg(const char* pMsg, ...); SystemMsgFunc m_systemmsgFunc; void* m_systemmsgData; virtual void threadRun(); protected: CPacketStorage m_PacketSorageSend; CakThread m_akThread; int m_nWaitTime;//0 HANDLE m_hNamedPipe; DWORD m_nNumberOfBytesWritten; char m_strPipename[64];// = L"\\\\.\\pipe\\MyNamedPipe";// ÆÄÀÌÇÁ ¿ÀºêÁ§Æ® À̸§ //CRITICAL_SECTION m_csSendSafe; // class queueData // { // public: // queueData() // { // m_nLen = 0; // m_pData = NULL; // }; // queueData(const queueData& rhs) // { // m_nLen = 0; // m_pData = NULL; // // if(rhs.m_nLen > 0) // { // m_pData = new char[rhs.m_nLen+1]; // memcpy(m_pData, rhs.m_pData, sizeof(char)*(rhs.m_nLen)); // m_pData[rhs.m_nLen] = 0; // m_nLen = rhs.m_nLen; // } // } // ~queueData() // { // clear(); // }; // queueData& operator=(const queueData& rhs) // { // clear(); // if(rhs.m_nLen > 0) // { // m_pData = new char[rhs.m_nLen+1]; // memcpy(m_pData, rhs.m_pData, sizeof(char)*(rhs.m_nLen)); // m_pData[rhs.m_nLen] = 0; // m_nLen = rhs.m_nLen; // } // return *this; // }; // void clear() // { // if(m_nLen > 0) // { // delete [] m_pData; // m_pData = NULL; // m_nLen = 0; // } // } // void setData(char* pData, long nLen) // { // clear(); // if(nLen <= 0 || pData == NULL) // { // return; // } // // m_pData = new char[nLen+1]; // memcpy(m_pData, pData, sizeof(char)*nLen); // m_pData[nLen] = 0; // m_nLen = nLen; // } // // //char Data[4096]; // char* m_pData; // long m_nLen; // }; // std::queue m_queSendData; };