2 #ifndef comfrm_cls_NodeConnectionH
3 #define comfrm_cls_NodeConnectionH
5 #include "node_protocol.h"
7 #include <boost/asio.hpp>
14 enum NodeConnectionState
22 typedef std::function< void (std::shared_ptr< NodeConnection >) > OnSocketClosedClb;
28 static std::shared_ptr< NodeConnection > createConnection(
const boost::asio::ip::address& p_ipAddr,
29 boost::asio::io_service& p_ioService,
30 std::function<
void (std::shared_ptr< NodeConnection >, std::vector< char >&) > p_msgCallback,
31 OnSocketClosedClb p_socketClosedClb);
32 static std::shared_ptr< NodeConnection > createServerConnection(boost::asio::io_service& p_ioService,
33 std::function<
void (std::shared_ptr< NodeConnection >, std::vector< char >&) > p_msgCallback,
34 OnSocketClosedClb p_socketClosedClb);
37 void send(
const std::vector< char >& p_data);
38 NodeConnectionState getState()
const;
39 boost::asio::ip::address getIpAddr()
const;
40 boost::asio::ip::tcp::socket& getSocket();
41 void setSocketClosedCallback(OnSocketClosedClb p_clb);
45 std::function<
void (std::shared_ptr< NodeConnection >, std::vector< char >&) > p_msgCallback,
46 OnSocketClosedClb p_socketClosedClb);
47 void connect(
const boost::asio::ip::address& p_ipAddr);
49 void onRead(
const boost::system::error_code& p_error, std::size_t p_bytesTransferred);
51 void processReceivedBytes(std::vector< char >& p_bytes);
52 bool fillMessageBuffer(std::vector< char >& p_bytes,
size_t& o_restBytesCount);
53 void setState(NodeConnectionState p_state);
57 boost::asio::ip::tcp::socket m_socket;
58 NodeConnectionState m_state;
59 std::vector< char > m_readBuffer;
61 std::vector< char > m_messageBuffer;
64 std::function< void (std::shared_ptr< NodeConnection >, std::vector< char >&) > m_msgCallback;
65 OnSocketClosedClb m_socketClosedCallback;
Definition: node_protocol.h:41
Definition: node_connection.h:12