18#ifndef TRINITYCORE_WORLD_SOCKET_H
19#define TRINITYCORE_WORLD_SOCKET_H
63 class AuthContinuedSession;
87 static std::array<uint8, 32>
const AuthCheckSeed;
88 static std::array<uint8, 32>
const SessionKeySeed;
89 static std::array<uint8, 32>
const ContinuedSessionSeed;
90 static std::array<uint8, 32>
const EncryptionKeySeed;
103 void Start()
override;
110 void SendAuthResponseError(
uint32 code);
119 void SendAuthSession();
120 bool InitializeCompression();
123 bool ReadHeaderHandler();
132 ReadDataHandlerResult ReadDataHandler();
136 void LogOpcodeText(
OpcodeClient opcode, std::scoped_lock<std::mutex>
const& guard)
const;
138 void SendPacketAndLogOpcode(
WorldPacket const& packet);
142 ReadDataHandlerResult HandleAuthSession(
WorldPacket&& packet);
144 ReadDataHandlerResult HandleAuthContinuedSession(
WorldPacket&& packet);
147 ReadDataHandlerResult HandleKeepAlive();
148 ReadDataHandlerResult HandleLogDisconnect(
WorldPacket&& packet)
const;
149 ReadDataHandlerResult HandleConnectToFailed(
WorldPacket&& packet);
150 ReadDataHandlerResult HandlePing(
WorldPacket&& packet);
151 ReadDataHandlerResult HandleEnterEncryptedModeAck();
std::array< uint8, SESSION_KEY_LENGTH > SessionKey
std::shared_ptr< PreparedResultSet > PreparedQueryResult
std::chrono::steady_clock::time_point TimePoint
time_point shorthand typedefs
std::conditional_t< IntrusiveLink !=nullptr, Trinity::Impl::MPSCQueueIntrusive< T, IntrusiveLink >, Trinity::Impl::MPSCQueueNonIntrusive< T > > MPSCQueue
struct z_stream_s z_stream
bool NeedsEncryption() const
EncryptablePacket(WorldPacket const &packet, bool encrypt)
std::atomic< EncryptablePacket * > SocketQueueLink
virtual SocketReadCallbackResult ReadHandler()
Player session in the World.
MessageBuffer _headerBuffer
ConnectionType GetConnectionType() const
WorldSocket(WorldSocket &&right)=delete
MessageBuffer _packetBuffer
QueryCallbackProcessor _queryProcessor
WorldPacketCrypt _authCrypt
WorldSocket & operator=(WorldSocket const &right)=delete
std::size_t _sendBufferSize
std::array< uint8, 32 > _serverChallenge
WorldSession * _worldSession
z_stream * _compressionStream
void SetSendBufferSize(std::size_t sendBufferSize)
WorldSocket & operator=(WorldSocket &&right)=delete
MPSCQueue< EncryptablePacket, &EncryptablePacket::SocketQueueLink > _bufferQueue
std::array< uint8, 32 > _encryptKey
WorldSocket(WorldSocket const &right)=delete
std::mutex _worldSessionLock
static uint32 const MinSizeForCompression
boost::asio::basic_stream_socket< boost::asio::ip::tcp, boost::asio::io_context::executor_type > IoContextTcpSocket