17 #ifndef DEFAULTOPERATIONTCPCHANNEL_HPP_
18 #define DEFAULTOPERATIONTCPCHANNEL_HPP_
23 #include <boost/cstdint.hpp>
24 #include <boost/asio.hpp>
25 #include <boost/thread.hpp>
44 virtual const std::string&
getId()
const {
return CHANNEL_ID; }
58 connectivityChecker_= checker;
61 void onReadEvent(
const boost::system::error_code& err);
74 static const boost::uint16_t PING_TIMEOUT;
75 static const boost::uint16_t RECONNECT_TIMEOUT;
77 boost::system::error_code sendKaaSync(
const std::map<TransportType, ChannelDirection>& transportTypes);
78 boost::system::error_code sendConnect();
79 boost::system::error_code sendDisconnect();
80 boost::system::error_code sendPingRequest();
83 void readFromSocket();
89 static const std::string CHANNEL_ID;
90 static const std::map<TransportType, ChannelDirection> SUPPORTED_TYPES;
92 std::list<TransportType> ackTypes_;
95 boost::asio::io_service io_;
96 boost::asio::io_service::work work_;
97 boost::asio::ip::tcp::socket sock_;
98 boost::asio::deadline_timer pingTimer_;
99 boost::asio::deadline_timer reconnectTimer_;
100 boost::asio::streambuf responseBuffer_;
101 boost::thread_group channelThreads_;
105 bool isFirstResponseReceived_;
106 bool isPendingSyncRequest_;
113 boost::scoped_ptr<RsaEncoderDecoder> encDec_;
115 boost::mutex channelGuard_;
void onConnack(const ConnackMessage &message)
std::pair< Botan::MemoryVector< boost::uint8_t >, std::string > KeyPair
virtual void setMultiplexer(IKaaDataMultiplexer *multiplexer)
virtual ChannelType getChannelType() const
virtual void syncAck(TransportType type)
virtual void setConnectivityChecker(ConnectivityCheckerPtr checker)
virtual ServerType getServerType() const
virtual const std::string & getId() const
virtual void setDemultiplexer(IKaaDataDemultiplexer *demultiplexer)
virtual void setServer(IServerInfoPtr server)
boost::shared_ptr< KaaTcpServerInfo > OperationServerKaaTcpInfoPtr
boost::shared_ptr< IServerInfo > IServerInfoPtr
void onReadEvent(const boost::system::error_code &err)
virtual const std::map< TransportType, ChannelDirection > & getSupportedTransportTypes() const
void onPingTimeout(const boost::system::error_code &err)
DefaultOperationTcpChannel(IKaaChannelManager *channelManager, const KeyPair &clientKeys)
virtual void sync(TransportType type)
virtual ~DefaultOperationTcpChannel()
void onDisconnect(const DisconnectMessage &message)
void onKaaSync(const KaaSyncResponse &message)
boost::shared_ptr< IConnectivityChecker > ConnectivityCheckerPtr