IClient.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #ifndef ICLIENT_H
  2. #define ICLIENT_H
  3. //应该使用线程的方法,Startup启动线程等待信号,不同的IO模型使用不同的信号通知这些线程,处理的时候
  4. //根据处理器数目的不同启动不同数目的线程和缓冲区,处理异常情况
  5. #include "zport.h"
  6. #include "xbuffer.h"
  7. #include "Cipher.h"
  8. enum enumServerConnectInfo {
  9. enumServerConnectCreate = 0x100,
  10. enumServerConnectClose
  11. };
  12. typedef void (*CALLBACK_CLIENT_EVENT )(void *lpParam, const unsigned long &ulnEventType);
  13. class IClient;
  14. class IClientThread : public ZThread {
  15. IClient *parent;
  16. public:
  17. IClientThread(IClient *the_parent) : ZThread() {
  18. parent = the_parent;
  19. }
  20. int action();
  21. };
  22. extern ZPerf g_sendPerf;
  23. extern ZPerf g_recvPerf;
  24. class IClient {
  25. protected:
  26. IClientThread *thread;
  27. public:
  28. ZPerf sendPerf;
  29. ZPerf recvPerf;
  30. bool bConnected;
  31. bool bStop;
  32. unsigned int m_uServerKey;
  33. unsigned int m_uClientKey;
  34. // int read_index;
  35. // int write_index;
  36. CALLBACK_CLIENT_EVENT call_back;
  37. void *call_back_param;
  38. int nSocket;
  39. ZBuffer *buffer;
  40. IClient(int max_send = 640 * 1024, int max_receive = 640 * 1024);
  41. ~IClient();
  42. int Startup(); //启动一个线程发送
  43. int Cleanup();
  44. int Shutdown();
  45. void Release() {
  46. }
  47. bool ConnectTo(const char * const &pAddressToConnectServer, unsigned short usPortToConnectServer);
  48. void RegisterMsgFilter(void * lpParam, CALLBACK_CLIENT_EVENT pfnEventNotify);
  49. bool SendPackToServer( const void * const pData, const unsigned long datalength);
  50. void *GetPackFromServer(unsigned int &datalength );
  51. void startPerf() {
  52. buffer->startPerf(&g_recvPerf, &g_sendPerf);
  53. }
  54. void stopPerf() {
  55. buffer->stopPerf();
  56. }
  57. };
  58. #endif