eris
1.4.0
A WorldForge client library.
|
Template specialization which uses boost::asio sockets with resolvers (i.e. TCP and UDP, but not domain sockets). More...
#include <StreamSocket.h>
Public Types | |
enum | Status { INVALID_STATUS = 0, CONNECTING, CONNECTING_TIMEOUT, CONNECTING_FAILED, NEGOTIATE, NEGOTIATE_TIMEOUT, NEGOTIATE_FAILED, CONNECTED, CONNECTION_FAILED, DISCONNECTED, DISCONNECTING } |
Public Member Functions | |
ResolvableAsioStreamSocket (boost::asio::io_service &io_service, const std::string &client_name, Atlas::Bridge &bridge, StreamSocket::Callbacks callbacks) | |
void | connectWithQuery (const typename ProtocolT::resolver::query &query) |
void | connect (const typename ProtocolT::endpoint &endpoint) |
void | write () override |
Send any unsent data. More... | |
ProtocolT::socket & | getAsioSocket () |
void | detach () |
Detaches the callbacks. More... | |
Atlas::Codec & | getCodec () |
Gets the codec object. More... | |
Atlas::Objects::ObjectsEncoder & | getEncoder () |
Gets the encoder object. More... | |
Protected Types | |
enum | { read_buffer_size = 2048 } |
Protected Member Functions | |
void | negotiate_read () override |
void | negotiate_write () |
void | do_read () override |
void | startNegotiation () |
Atlas::Negotiate::State | negotiate () |
Protected Attributes | |
ProtocolT::resolver | m_resolver |
ProtocolT::socket | m_socket |
boost::asio::io_service & | m_io_service |
Atlas::Bridge & | _bridge |
Callbacks | _callbacks |
std::unique_ptr< boost::asio::streambuf > | mWriteBuffer |
std::unique_ptr< boost::asio::streambuf > | mSendBuffer |
boost::asio::streambuf | mReadBuffer |
std::istream | mInStream |
std::ostream | mOutStream |
bool | mShouldSend |
bool | mIsSending |
std::unique_ptr< Atlas::Net::StreamConnect > | _sc |
negotiation object (nullptr after connection!) More... | |
boost::asio::steady_timer | _negotiateTimer |
boost::asio::steady_timer | _connectTimer |
std::unique_ptr< Atlas::Codec > | m_codec |
std::unique_ptr< Atlas::Objects::ObjectsEncoder > | m_encoder |
bool | m_is_connected |
Template specialization which uses boost::asio sockets with resolvers (i.e. TCP and UDP, but not domain sockets).
Definition at line 205 of file StreamSocket.h.
|
inherited |
Definition at line 58 of file StreamSocket.h.
|
inherited |
Detaches the callbacks.
Call this when the owner instance is destroyed, or you otherwise don't want any callbacks.
Definition at line 58 of file StreamSocket.cpp.
|
inherited |
Gets the codec object.
Definition at line 123 of file StreamSocket.cpp.
|
inherited |
Gets the encoder object.
Definition at line 128 of file StreamSocket.cpp.
|
overridevirtualinherited |
Send any unsent data.
Implements Eris::StreamSocket.
Definition at line 191 of file StreamSocket_impl.h.
References Eris::StreamSocket::CONNECTION_FAILED, Eris::StreamSocket::mIsSending, Eris::StreamSocket::mOutStream, Eris::StreamSocket::mSendBuffer, Eris::StreamSocket::mShouldSend, Eris::StreamSocket::mWriteBuffer, and Eris::StreamSocket::Callbacks::stateChanged.
|
protectedinherited |
negotiation object (nullptr after connection!)
Definition at line 166 of file StreamSocket.h.
|
protectedinherited |
Stream for data being received.
Definition at line 149 of file StreamSocket.h.
|
protectedinherited |
True if we're currently sending through an async_write (and thus shouldn't touch mSendBuffer).
Definition at line 164 of file StreamSocket.h.
Referenced by Eris::AsioStreamSocket< ProtocolT >::write().
|
protectedinherited |
Stream for data being sent out.
Definition at line 154 of file StreamSocket.h.
Referenced by Eris::AsioStreamSocket< ProtocolT >::write().
|
protectedinherited |
Buffer for data being read from the socket.
Definition at line 144 of file StreamSocket.h.
|
protectedinherited |
Buffer of data which is being sent. This should not be touched until the async_write call completes.
Definition at line 139 of file StreamSocket.h.
Referenced by Eris::AsioStreamSocket< ProtocolT >::write().
|
protectedinherited |
True if we should send again as soon as an ongoing async_write operation completes.
Definition at line 159 of file StreamSocket.h.
Referenced by Eris::AsioStreamSocket< ProtocolT >::write().
|
protectedinherited |
Buffer used to write data to be sent. Swapped with mSendBuffer once data is being sent.
Definition at line 133 of file StreamSocket.h.
Referenced by Eris::AsioStreamSocket< ProtocolT >::write().