![]() |
TrinityCore
|
#include <Socket.h>
Inheritance diagram for Trinity::Net::Socket< Stream >:Public Member Functions | |
| template<typename... Args> | |
| Socket (IoContextTcpSocket &&socket, Args &&... args) | |
| template<typename... Args> | |
| Socket (boost::asio::io_context &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 () |
| virtual bool | Update () |
| boost::asio::ip::address const & | GetRemoteIpAddress () const |
| uint16 | GetRemotePort () const |
| template<SocketReadCallback 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 | WriteHandlerWrapper (boost::system::error_code const &) |
| bool | HandleQueue () |
Private Attributes | |
| Stream | _socket |
| boost::asio::ip::address | _remoteAddress |
| uint16 | _remotePort = 0 |
| MessageBuffer | _readBuffer = MessageBuffer(READ_BLOCK_SIZE) |
| 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: |
void close(boost::system::error_code& error);
void shutdown(boost::asio::socket_base::shutdown_type what, boost::system::error_code& shutdownError);
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 |
Definition at line 128 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 227 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 164 of file Socket.h.
References Trinity::Net::Socket< Stream >::_readBuffer, Trinity::Net::Socket< Stream >::_socket, MessageBuffer::EnsureFreeSpace(), MessageBuffer::GetRemainingSpace(), MessageBuffer::GetWritePointer(), Trinity::Net::Socket< Stream >::IsOpen(), and MessageBuffer::Normalize().
Referenced by WorldSocket::HandleAuthSessionCallback().
|
inline |
Definition at line 191 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(), Trinity::Net::Socket< Stream >::HandleQueue(), AuthSession::ReadHandler(), WorldSocket::ReadHandler(), and Trinity::Net::Socket< Stream >::ReadHandlerInternal().
|
inline |
Marks the socket for closing after write buffer becomes empty.
Definition at line 206 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 WorldSocket::HandleAuthSessionCallback().
|
inline |
Definition at line 215 of file Socket.h.
References Trinity::Net::Socket< Stream >::_readBuffer.
Referenced by AuthSession::HandleLogonChallenge(), AuthSession::HandleLogonProof(), AuthSession::HandleReconnectChallenge(), AuthSession::HandleReconnectProof(), AuthSession::ReadHandler(), and WorldSocket::ReadHandler().
|
inline |
Definition at line 153 of file Socket.h.
References Trinity::Net::Socket< Stream >::_remoteAddress.
Referenced by Trinity::Net::Socket< Stream >::CloseSocket(), WorldSocket::HandleAuthSessionCallback(), AuthSession::HandleLogonProof(), WorldSocket::HandlePing(), AuthSession::HandleReconnectProof(), AuthSession::LogonChallengeCallback(), WorldSocket::LogOpcodeText(), WorldSocket::ReadDataHandler(), WorldSocket::ReadHeaderHandler(), AuthSession::RealmListCallback(), WorldSocket::SendPacket(), WorldSocket::SendPacketAndLogOpcode(), and Trinity::Net::Socket< Stream >::SetNoDelay().
|
inline |
Definition at line 158 of file Socket.h.
References Trinity::Net::Socket< Stream >::_remotePort.
Referenced by AuthSession::HandleLogonProof(), AuthSession::HandleReconnectProof(), AuthSession::LogonChallengeCallback(), WorldSocket::ReadDataHandler(), and WorldSocket::SendPacket().
|
inlineprivate |
Definition at line 302 of file Socket.h.
References Trinity::Net::Socket< Stream >::_openState, Trinity::Net::Socket< Stream >::_socket, Trinity::Net::Socket< Stream >::_writeQueue, Trinity::Net::Socket< Stream >::AsyncProcessQueue(), Trinity::Net::Socket< Stream >::CloseSocket(), MessageBuffer::GetActiveSize(), MessageBuffer::GetReadPointer(), Trinity::Net::Socket< Stream >::OpenState_Closing, and MessageBuffer::ReadCompleted().
Referenced by Trinity::Net::Socket< Stream >::Update(), and Trinity::Net::Socket< Stream >::WriteHandlerWrapper().
|
inline |
Definition at line 189 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(), AuthSession::SendPacket(), and WorldSocket::SendPacket().
|
inlineprotectedvirtual |
Reimplemented in WorldSocket.
Definition at line 223 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::CloseSocket().
|
delete |
|
delete |
|
inline |
Definition at line 180 of file Socket.h.
References Trinity::Net::Socket< Stream >::_writeQueue, and Trinity::Net::Socket< Stream >::AsyncProcessQueue().
Referenced by AuthSession::SendPacket(), and WorldSocket::Update().
|
inlineprotectedvirtual |
Reimplemented in AuthSession, and WorldSocket.
Definition at line 225 of file Socket.h.
References Trinity::Net::KeepReading.
Referenced by Trinity::Net::InvokeReadHandlerCallback< SocketType >::operator()().
|
inlineprivate |
Definition at line 262 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 252 of file Socket.h.
References Trinity::Net::Socket< Stream >::_socket, Trinity::Net::Socket< Stream >::GetRemoteIpAddress(), and TC_LOG_DEBUG.
|
inlinevirtual |
Reimplemented in AuthSession, and WorldSocket.
|
inline |
Definition at line 217 of file Socket.h.
References Trinity::Net::Socket< Stream >::_socket.
|
inlinevirtual |
Reimplemented in AuthSession, and WorldSocket.
Definition at line 137 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 296 of file Socket.h.
References Trinity::Net::Socket< Stream >::_isWritingAsync, and Trinity::Net::Socket< Stream >::HandleQueue().
|
private |
Definition at line 360 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 358 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::CloseSocket(), Trinity::Net::Socket< Stream >::DelayedCloseSocket(), Trinity::Net::Socket< Stream >::HandleQueue(), Trinity::Net::Socket< Stream >::IsOpen(), Trinity::Net::Socket< Stream >::Update(), and Trinity::Net::Socket< Stream >::~Socket().
|
private |
Definition at line 350 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::AsyncRead(), Trinity::Net::Socket< Stream >::GetReadBuffer(), and Trinity::Net::Socket< Stream >::ReadHandlerInternal().
|
private |
Definition at line 347 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::GetRemoteIpAddress().
|
private |
Definition at line 348 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::GetRemotePort().
|
private |
Definition at line 345 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 351 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 >::QueuePacket(), and Trinity::Net::Socket< Stream >::Update().
|
staticconstexprprivate |
Definition at line 356 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 355 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::DelayedCloseSocket(), and Trinity::Net::Socket< Stream >::HandleQueue().
|
staticconstexprprivate |
Definition at line 354 of file Socket.h.
Referenced by Trinity::Net::Socket< Stream >::IsOpen(), and Trinity::Net::Socket< Stream >::Update().