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

模拟服务器

开发平台:

C/C++

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