CSocketClient.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. private:
  45. // new test
  46. endpoint_type m_ep;
  47. sock_ptr m_psocket;
  48. buffer_type m_buf;
  49. boost::thread* m_pNetThread;
  50. unsigned int mID;
  51. std::vector<char> m_vbuf;
  52. boost::function<void(CMessage&, unsigned int)> mMessageHandler;
  53. CMessageQueue write_msgs_;
  54. CEntityBase* m_pEntity;
  55. };
  56. }
  57. #endif