CSocketClient.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #ifndef __CSOCKETCLIENT_H_
  2. #define __CSOCKETCLIENT_H_
  3. #include "ErrorCode.h"
  4. #include <deque>
  5. #include <boost/bind.hpp>
  6. #include <boost/asio.hpp>
  7. #include <boost/function.hpp>
  8. #include <boost/thread.hpp>
  9. #include "CMessage.h"
  10. #include "ISocketCallback.h"
  11. #include <vector>
  12. #include "baseEx.h"
  13. //extern class CWebsocketServer;
  14. bool checkHttpThreadFun(const std::string url);
  15. std::pair<bool, std::string> DetectActiveHttp(std::vector<std::string> urlArr);
  16. namespace Chromium{
  17. typedef std::deque<CMessage> CMessageQueue;
  18. class CSocketClient {
  19. typedef CSocketClient this_type;
  20. typedef boost::asio::ip::tcp::acceptor acceptor_type;
  21. typedef boost::asio::ip::tcp::endpoint endpoint_type;
  22. typedef boost::asio::ip::tcp::socket socket_type;
  23. typedef boost::asio::ip::address address_type;
  24. typedef boost::shared_ptr<socket_type> sock_ptr;
  25. typedef std::vector<char> buffer_type;
  26. public:
  27. explicit CSocketClient(CEntityBase* pEntity, unsigned int id);
  28. CSocketClient(boost::asio::io_service &ios , const char* ipAddr, const char* port, CEntityBase* pEntity, unsigned int id);
  29. ~CSocketClient();
  30. ErrorCodeEnum Connect();
  31. ErrorCodeEnum Close();
  32. ErrorCodeEnum Reconnect();
  33. ErrorCodeEnum Write(CMessage *pMsg);
  34. ErrorCodeEnum StartSocketService();
  35. ErrorCodeEnum StopSocketService();
  36. ErrorCodeEnum SetMessageHandler(ISocketCallback *obj);
  37. private:
  38. void handle_connect(const boost::system::error_code& err);
  39. void handle_close(const boost::system::error_code& err);
  40. void handle_read(const boost::system::error_code& err,
  41. const size_t bytes_transferred, CMessage &msg);
  42. void handle_write(const boost::system::error_code& err);
  43. void thread_recv();
  44. void hexdump(const char *buf, const int num);
  45. private:
  46. // new test
  47. endpoint_type m_ep;
  48. sock_ptr m_psocket;
  49. buffer_type m_buf;
  50. boost::asio::io_service *m_pio;
  51. boost::thread* m_pNetThread;
  52. unsigned int mID;
  53. std::vector<char> m_vbuf;
  54. boost::function<void(CMessage&, unsigned int)> mMessageHandler;
  55. CMessageQueue write_msgs_;
  56. CEntityBase* m_pEntity;
  57. };
  58. }
  59. #endif