![]() |
TrinityCore
|
#include <Socket.h>
Inheritance diagram for Trinity::Net::Socket< Stream >:Classes | |
| struct | Endpoint |
Public Member Functions | |
| template<typename... Args> | |
| Socket (IoContextTcpSocket &&socket, Args &&... args) | |
| template<typename... Args> | |
| Socket (Asio::IoContext &context, Args &&... args) | |
| Socket (Socket const &other)=delete | |
| Socket (Socket &&other)=delete | |
| Socket & | operator= (Socket const &other)=delete |
| Socket & | operator= (Socket &&other)=delete |
| virtual | ~Socket () |
| virtual void | Start () |
| template<BOOST_ASIO_COMPLETION_TOKEN_FOR(void(boost::system::error_code, boost::asio::ip::tcp::endpoint)) Callback> | |
| decltype(auto) | Connect (boost::asio::ip::tcp::endpoint const &endpoint, Callback &&callback) |
| template<BOOST_ASIO_COMPLETION_TOKEN_FOR(void(boost::system::error_code, boost::asio::ip::tcp::endpoint)) Callback> | |
| decltype(auto) | Connect (std::vector< boost::asio::ip::tcp::endpoint > const &endpoints, Callback &&callback) |
| virtual bool | Update () |
| boost::asio::ip::address const & | GetRemoteIpAddress () const |
| uint16 | GetRemotePort () const |
| void | SetRemoteEndpoint (boost::asio::ip::tcp::endpoint const &endpoint) |
| template<invocable_r< SocketReadCallbackResult > Callback> | |
| void | AsyncRead (Callback &&callback) |
| void | QueuePacket (MessageBuffer &&buffer) |
| bool | IsOpen () const |
| void | CloseSocket () |
| void | DelayedCloseSocket () |
| Marks the socket for closing after write buffer becomes empty. | |
| MessageBuffer & | GetReadBuffer () |
| Stream & | underlying_stream () |
Protected Member Functions | |
| virtual void | OnClose () |
| virtual SocketReadCallbackResult | ReadHandler () |
| bool | AsyncProcessQueue () |
| void | SetNoDelay (bool enable) |
Private Member Functions | |
| bool | ReadHandlerInternal (boost::system::error_code const &error, size_t transferredBytes) |
| void | QueuedBufferWriteDone () |
| void | WriteHandlerWrapper (boost::system::error_code const &) |
| bool | HandleQueue () |
Private Attributes | |
| Stream | _socket |
| struct Trinity::Net::Socket::Endpoint | _remoteEndpoint |
| MessageBuffer | _readBuffer = MessageBuffer(0x1000) |
| std::queue< MessageBuffer > | _writeQueue |
| std::atomic< uint8 > | _openState |
| bool | _isWritingAsync = false |
Static Private Attributes | |
| static constexpr uint8 | OpenState_Open = 0x0 |
| static constexpr uint8 | OpenState_Closing = 0x1 |
| Transition to Closed state after sending all queued data. | |
| static constexpr uint8 | OpenState_Closed = 0x2 |
Base async socket implementation
| Stream | stream type used for operations on socket Stream must implement the following methods: |
executor_type get_executor();
bool is_open() const;
void close(boost::system::error_code& error);
void shutdown(boost::asio::socket_base::shutdown_type what, boost::system::error_code& shutdownError);
template<typename ConnectHandlerType> void async_connect(boost::asio::ip::tcp::endpoint const& endpoint, ConnectHandlerType&& handler);
template<typename MutableBufferSequence, typename ReadHandlerType> void async_read_some(MutableBufferSequence const& buffers, ReadHandlerType&& handler);
template<typename ConstBufferSequence, typename WriteHandlerType> void async_write_some(ConstBufferSequence const& buffers, WriteHandlerType&& handler);
template<typename ConstBufferSequence> std::size_t write_some(ConstBufferSequence const& buffers, boost::system::error_code& error);
template<typename WaitHandlerType> void async_wait(boost::asio::socket_base::wait_type type, WaitHandlerType&& handler);
template<typename SettableSocketOption> void set_option(SettableSocketOption const& option, boost::system::error_code& error);
tcp::socket::endpoint_type remote_endpoint() const;
|
inlineexplicit |
|
inlineexplicit |
|
delete |
|
delete |
|
inlinevirtual |
Reimplemented in Trinity::Net::Http::Socket.
Definition at line 146 of file Socket.h.
References Trinity::Net::Socket< Stream >::_openState, Trinity::Net::Socket< Stream >::_socket, and Trinity::Net::Socket< Stream >::OpenState_Closed.
|
inlineprotected |
Definition at line 265 of file Socket.h.
References Trinity::Net::Socket< Stream >::_isWritingAsync, Trinity::Net::Socket< Stream >::_socket, Trinity::Net::Socket< Stream >::_writeQueue, MessageBuffer::GetActiveSize(), and MessageBuffer::GetReadPointer().
Referenced by Trinity::Net::Socket< Stream >::HandleQueue(), and Trinity::Net::Socket< Stream >::QueuePacket().
|
inline |
Definition at line 203 of file Socket.h.
References Trinity::Net::Socket< Stream >::_readBuffer, Trinity::Net::Socket< Stream >::_socket, Trinity::Net::Socket< Stream >::IsOpen(), Trinity::Net::KeepReading, and Trinity::Net::PrepareReadBuffer().
Referenced by WorldSocketProtocolInitializer::AsyncRead(), WorldSocket::HandleAuthContinuedSessionCallback(), WorldSocket::HandleAuthSessionCallback(), and Trinity::Net::ReadConnectionInitializer< AsyncReadObjectType, ReadHandlerObjectType >::Start().
|
inline |
Definition at line 228 of file Socket.h.
References Trinity::Net::Socket< Stream >::_openState, Trinity::Net::Socket< Stream >::_socket, Trinity::Net::Socket< Stream >::GetRemoteIpAddress(), Trinity::Net::Socket< Stream >::OnClose(), Trinity::Net::Socket< Stream >::OpenState_Closed, and TC_LOG_DEBUG.
Referenced by Trinity::Net::Socket< Stream >::DelayedCloseSocket(), WorldSocketProtocolInitializer::HandleDataReady(), Trinity::Net::Impl::Operations::Connect< Socket >::HandleError(), WorldSocket::InitializeCompression(), Trinity::Net::Socket< Stream >::QueuedBufferWriteDone(), WorldSocket::ReadHandler(), and Trinity::Net::Socket< Stream >::ReadHandlerInternal().
|
inline |
Definition at line 156 of file Socket.h.
References Trinity::Net::Socket< Stream >::_openState, Trinity::Net::Socket< Stream >::OpenState_Open, and Trinity::Net::Socket< Stream >::underlying_stream().
|
inline |
Definition at line 164 of file Socket.h.
References Trinity::Net::Socket< Stream >::_openState, Trinity::Net::Socket< Stream >::OpenState_Open, and Trinity::Net::Socket< Stream >::underlying_stream().
|
inline |
Marks the socket for closing after write buffer becomes empty.
Definition at line 243 of file Socket.h.
References Trinity::Net::Socket< Stream >::_openState, Trinity::Net::Socket< Stream >::_writeQueue, Trinity::Net::Socket< Stream >::CloseSocket(), Trinity::Net::Socket< Stream >::OpenState_Closing, and Trinity::Net::Socket< Stream >::OpenState_Open.
Referenced by WorldSocket::HandleAuthContinuedSession(), WorldSocket::HandleAuthContinuedSessionCallback(), WorldSocket::HandleAuthSession(), and WorldSocket::HandleAuthSessionCallback().
|
inline |
Definition at line 253 of file Socket.h.
References Trinity::Net::Socket< Stream >::_readBuffer.
Referenced by WorldSocketProtocolInitializer::ReadHandler(), and WorldSocket::ReadHandler().
|
inline |
Definition at line 187 of file Socket.h.
References Trinity::Net::Socket< Stream >::_remoteEndpoint, and Trinity::Net::Socket< Stream >::Endpoint::Address.
Referenced by Trinity::Net::Socket< Stream >::CloseSocket(), WorldSocket::HandleAuthContinuedSession(), WorldSocket::HandleAuthContinuedSessionCallback(), WorldSocket::HandleAuthSession(), WorldSocket::HandleAuthSessionCallback(), WorldSocket::HandleConnectToFailed(), WorldSocketProtocolInitializer::HandleDataReady(), WorldSocket::HandleKeepAlive(), WorldSocket::HandleLogDisconnect(), WorldSocket::HandlePing(), WorldSocket::LogOpcodeText(), WorldSocket::LogOpcodeText(), WorldSocket::ReadDataHandler(), WorldSocket::ReadHeaderHandler(), WorldSocket::SendPacket(), WorldSocket::SendPacketAndLogOpcode(), and Trinity::Net::Socket< Stream >::SetNoDelay().
|
inline |
Definition at line 192 of file Socket.h.
References Trinity::Net::Socket< Stream >::_remoteEndpoint, and Trinity::Net::Socket< Stream >::Endpoint::Port.
Referenced by WorldSocket::ReadDataHandler(), and WorldSocket::SendPacket().
|
inlineprivate |
Definition at line 345 of file Socket.h.
References Trinity::Net::Socket< Stream >::_socket, Trinity::Net::Socket< Stream >::_writeQueue, Trinity::Net::Socket< Stream >::AsyncProcessQueue(), MessageBuffer::GetActiveSize(), MessageBuffer::GetReadPointer(), Trinity::Net::Socket< Stream >::QueuedBufferWriteDone(), and MessageBuffer::ReadCompleted().
Referenced by Trinity::Net::Socket< Stream >::Update(), and Trinity::Net::Socket< Stream >::WriteHandlerWrapper().
|
inline |
Definition at line 226 of file Socket.h.
References Trinity::Net::Socket< Stream >::_openState, and Trinity::Net::Socket< Stream >::OpenState_Open.
Referenced by Trinity::Net::Socket< Stream >::AsyncRead(), Trinity::Net::Socket< Stream >::ReadHandlerInternal(), and WorldSocket::SendPacket().
|
inlineprotectedvirtual |
Reimplemented in WorldSocket.
Definition at line 261 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::CloseSocket().
|
delete |
|
delete |
|
inlineprivate |
Definition at line 312 of file Socket.h.
References Trinity::Net::Socket< Stream >::_openState, Trinity::Net::Socket< Stream >::_writeQueue, Trinity::Net::Socket< Stream >::CloseSocket(), and Trinity::Net::Socket< Stream >::OpenState_Closing.
Referenced by Trinity::Net::Socket< Stream >::HandleQueue().
|
inline |
Definition at line 217 of file Socket.h.
References Trinity::Net::Socket< Stream >::_writeQueue, and Trinity::Net::Socket< Stream >::AsyncProcessQueue().
Referenced by WorldSocketProtocolInitializer::Start(), and WorldSocket::Update().
|
inlineprotectedvirtual |
Reimplemented in Trinity::Net::Http::BaseSocket< Stream >, Trinity::Net::Http::BaseSocket< Impl::BoostBeastSocketWrapper >, Trinity::Net::Http::BaseSocket< SslStream< Impl::BoostBeastSocketWrapper > >, and WorldSocket.
Definition at line 263 of file Socket.h.
References Trinity::Net::KeepReading.
Referenced by Trinity::Net::InvokeReadHandlerCallback< SocketType >::operator()().
|
inlineprivate |
Definition at line 300 of file Socket.h.
References Trinity::Net::Socket< Stream >::_readBuffer, Trinity::Net::Socket< Stream >::CloseSocket(), Trinity::Net::Socket< Stream >::IsOpen(), and MessageBuffer::WriteCompleted().
|
inlineprotected |
Definition at line 290 of file Socket.h.
References Trinity::Net::Socket< Stream >::_socket, Trinity::Net::Socket< Stream >::GetRemoteIpAddress(), and TC_LOG_DEBUG.
Referenced by WorldSocket::ReadDataHandler().
|
inline |
Definition at line 197 of file Socket.h.
References Trinity::Net::Socket< Stream >::_remoteEndpoint.
|
inlinevirtual |
|
inline |
Definition at line 255 of file Socket.h.
References Trinity::Net::Socket< Stream >::_socket.
Referenced by Trinity::Net::Socket< Stream >::Connect(), and Trinity::Net::Socket< Stream >::Connect().
|
inlinevirtual |
Reimplemented in Trinity::Net::Http::BaseSocket< Stream >, Trinity::Net::Http::BaseSocket< Impl::BoostBeastSocketWrapper >, Trinity::Net::Http::BaseSocket< SslStream< Impl::BoostBeastSocketWrapper > >, and WorldSocket.
Definition at line 171 of file Socket.h.
References Trinity::Net::Socket< Stream >::_isWritingAsync, Trinity::Net::Socket< Stream >::_openState, Trinity::Net::Socket< Stream >::_writeQueue, Trinity::Net::Socket< Stream >::HandleQueue(), Trinity::Net::Socket< Stream >::OpenState_Closed, and Trinity::Net::Socket< Stream >::OpenState_Open.
|
inlineprivate |
Definition at line 339 of file Socket.h.
References Trinity::Net::Socket< Stream >::_isWritingAsync, and Trinity::Net::Socket< Stream >::HandleQueue().
|
private |
Definition at line 403 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::AsyncProcessQueue(), Trinity::Net::Socket< Stream >::Update(), and Trinity::Net::Socket< Stream >::WriteHandlerWrapper().
|
private |
Definition at line 401 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::CloseSocket(), Trinity::Net::Socket< Stream >::Connect(), Trinity::Net::Socket< Stream >::Connect(), Trinity::Net::Socket< Stream >::DelayedCloseSocket(), Trinity::Net::Socket< Stream >::IsOpen(), Trinity::Net::Socket< Stream >::QueuedBufferWriteDone(), Trinity::Net::Socket< Stream >::Update(), and Trinity::Net::Socket< Stream >::~Socket().
|
private |
Definition at line 393 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::AsyncRead(), Trinity::Net::Socket< Stream >::GetReadBuffer(), and Trinity::Net::Socket< Stream >::ReadHandlerInternal().
|
private |
|
private |
Definition at line 382 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::AsyncProcessQueue(), Trinity::Net::Socket< Stream >::AsyncRead(), Trinity::Net::Socket< Stream >::CloseSocket(), Trinity::Net::Socket< Stream >::HandleQueue(), Trinity::Net::Socket< Stream >::SetNoDelay(), Trinity::Net::Socket< Stream >::underlying_stream(), and Trinity::Net::Socket< Stream >::~Socket().
|
private |
Definition at line 394 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::AsyncProcessQueue(), Trinity::Net::Socket< Stream >::DelayedCloseSocket(), Trinity::Net::Socket< Stream >::HandleQueue(), Trinity::Net::Socket< Stream >::QueuedBufferWriteDone(), Trinity::Net::Socket< Stream >::QueuePacket(), and Trinity::Net::Socket< Stream >::Update().
|
staticconstexprprivate |
Definition at line 399 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::CloseSocket(), Trinity::Net::Socket< Stream >::Update(), and Trinity::Net::Socket< Stream >::~Socket().
|
staticconstexprprivate |
Transition to Closed state after sending all queued data.
Definition at line 398 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::DelayedCloseSocket(), and Trinity::Net::Socket< Stream >::QueuedBufferWriteDone().
|
staticconstexprprivate |
Definition at line 397 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::Connect(), Trinity::Net::Socket< Stream >::Connect(), Trinity::Net::Socket< Stream >::DelayedCloseSocket(), Trinity::Net::Socket< Stream >::IsOpen(), and Trinity::Net::Socket< Stream >::Update().