123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- #ifndef __ISERVER_IMPL_HEADER__
- #define __ISERVER_IMPL_HEADER__
- #pragma once
- #include <afxwin.h>
- #include <atlbase.h>
- #include <list>
- #include "CritSection.h"
- #include "SocketHandle.h"
- #include "SocketServerImpl.h"
- #include "Client2SrvType.h"
- #if defined(SOCKHANDLE_USE_OVERLAPPED)
- #include "AsyncSocketServerImpl.h"
- #endif
- #define CALCDATALEN(x) (x+sizeof(STProtocolheader)+sizeof(STProtocoltail))
- namespace ServerSocketImpl
- {
- typedef std::list<SOCKET> CSocketList;
- class IServerImpl :public ISocketServerHandler
- {
- #if defined(SOCKHANDLE_USE_OVERLAPPED)
- typedef ASocketServerImpl<ISocketServerHandler> CSocketServer;
- #else
- typedef SocketServerImpl<ISocketServerHandler> CSocketServer;
- #endif
- friend CSocketServer;
- public:
- IServerImpl();
- ~IServerImpl();
- virtual void OnThreadBegin(CSocketHandle* pSH);
- virtual void OnThreadExit(CSocketHandle* pSH);
- virtual void OnAddConnection(CSocketHandle* pSH, SOCKET newSocket);
-
- virtual void OnDataReceived(LPWSAOVERLAPPED pSH, const BYTE* pbData, DWORD dwCount, const SockAddrIn& addr);
- virtual void OnConnectionFailure(CSocketHandle* pSH, SOCKET newSocket);
- virtual void OnConnectionDropped(CSocketHandle* pSH);
- virtual void OnConnectionError(CSocketHandle* pSH, DWORD dwError);
- #if defined(SOCKHANDLE_USE_OVERLAPPED)
- virtual void OnRemoveConnection(CSocketHandle* pSH , SOCKET dropSocket);
-
-
- #endif
- protected:
- CString m_strPort;
- int m_nPort;
- int m_nMode;
- int m_nSockType;
- CSocketServer m_SocketServer;
- void _cdecl AppendText(LPCTSTR lpszFormat, ...);
- void GetAddress(const SockAddrIn& addrIn, CString& rString) const;
- bool GetDestination(SockAddrIn& addrIn) const;
- bool SetupMCAST();
-
-
-
-
- void ToprocessRecivebuf(IN PerSocketContext &sockIOBuffer, IN const BYTE* pReceivebuf, IN DWORD dwReceiveSize);
-
- int OnIntegrityPacket(IN PerSocketContext &sockHandle, IN void *pIntegrityPacket);
- public:
- BOOL m_bStopbeat;
- int m_nSocketIndex;
- CRITICAL_SECTION m_csProcessData;
- DWORD GetClientConnectCount();
- BOOL Initialize();
- void Start(IN LPCTSTR strPort,IN const int &nMode);
- void Stop();
- void Send();
- void SendAll(CSocketHandle &sockHandle, unsigned char *pMsg, int nLength);
- HANDLE m_hClearInvalidateSocketThread;
- HANDLE m_hRunObject;
- void StartClearInvalidateSocketThread();
- static DWORD WINAPI ClearInvalidateSocketThread(void *pInstance);
- private:
- CSocketHandle m_SocketFile;
-
- public:
-
-
-
- };
- extern IServerImpl* g_pServerSocket;
- };
- #endif
|