Core/Battle.net: Handle ConnectionClosing
This commit is contained in:
1 parent
26e4b67e85
commit
cbabfe9920
15 files changed
+172
-64
No files matched your search
@@ -23,7 +23,7 @@ std::string Battlenet::Connection::Ping::ToString() const
|
||||
return "Battlenet::Connection::Ping";
|
||||
}
|
||||
|
||||
void Battlenet::Connection::Ping::CallHandler(Session* session) const
|
||||
void Battlenet::Connection::Ping::CallHandler(Session* session)
|
||||
{
|
||||
session->HandlePing(*this);
|
||||
}
|
||||
@@ -33,7 +33,7 @@ std::string Battlenet::Connection::EnableEncryption::ToString() const
|
||||
return "Battlenet::Connection::EnableEncryption";
|
||||
}
|
||||
|
||||
void Battlenet::Connection::EnableEncryption::CallHandler(Session* session) const
|
||||
void Battlenet::Connection::EnableEncryption::CallHandler(Session* session)
|
||||
{
|
||||
session->HandleEnableEncryption(*this);
|
||||
}
|
||||
@@ -43,11 +43,65 @@ std::string Battlenet::Connection::LogoutRequest::ToString() const
|
||||
return "Battlenet::Connection::LogoutRequest";
|
||||
}
|
||||
|
||||
void Battlenet::Connection::LogoutRequest::CallHandler(Session* session) const
|
||||
void Battlenet::Connection::LogoutRequest::CallHandler(Session* session)
|
||||
{
|
||||
session->HandleLogoutRequest(*this);
|
||||
}
|
||||
|
||||
void Battlenet::Connection::DisconnectRequest::Read()
|
||||
{
|
||||
Timeout = _stream.Read<uint16>(16);
|
||||
Tick = _stream.Read<uint32>(32);
|
||||
}
|
||||
|
||||
std::string Battlenet::Connection::DisconnectRequest::ToString() const
|
||||
{
|
||||
std::ostringstream str;
|
||||
str << "Battlenet::Connection::DisconnectRequest Timeout: " << Timeout << ", Tick: " << Tick;
|
||||
return str.str();
|
||||
}
|
||||
|
||||
void Battlenet::Connection::ConnectionClosing::Read()
|
||||
{
|
||||
Reason = _stream.Read<ClosingReason>(4);
|
||||
if (_stream.Read<bool>(1)) // HasHeader
|
||||
{
|
||||
Header.Opcode = _stream.Read<uint32>(6);
|
||||
if (_stream.Read<bool>(1))
|
||||
Header.Channel = _stream.Read<int32>(4);
|
||||
}
|
||||
|
||||
Now = _stream.Read<time_t>(32);
|
||||
_stream.Read<uint32>(25);
|
||||
auto bytes = _stream.ReadBytes(_stream.Read<uint8>(8)); // BadData
|
||||
Packets.resize(_stream.Read<uint8>(6));
|
||||
for (size_t i = 0; i < Packets.size(); ++i)
|
||||
{
|
||||
PacketInfo& info = Packets[i];
|
||||
info.CommandName = _stream.ReadFourCC();
|
||||
info.LayerId = _stream.Read<uint32>(16);
|
||||
info.Channel = _stream.ReadFourCC();
|
||||
info.Timestamp = _stream.Read<uint32>(32);
|
||||
info.Size = _stream.Read<uint32>(16);
|
||||
}
|
||||
}
|
||||
|
||||
std::string Battlenet::Connection::ConnectionClosing::ToString() const
|
||||
{
|
||||
std::ostringstream stream;
|
||||
stream << "Battlenet::Connection::ConnectionClosing Reason: " << Reason << ", Now: " << Now << ", Packet history size: " << Packets.size();
|
||||
for (PacketInfo const& packet : Packets)
|
||||
stream << std::endl << "Battlenet::Connection::ConnectionClosing::PacketInfo LayerId: " << packet.LayerId
|
||||
<< ", Channel: " << packet.Channel << ", CommandName: " << packet.CommandName << ", Size: " << packet.Size << ", Timestamp: " << packet.Timestamp;
|
||||
|
||||
return stream.str();
|
||||
}
|
||||
|
||||
void Battlenet::Connection::ConnectionClosing::CallHandler(Session* session)
|
||||
{
|
||||
session->HandleConnectionClosing(*this);
|
||||
}
|
||||
|
||||
std::string Battlenet::Connection::Pong::ToString() const
|
||||
{
|
||||
return "Battlenet::Connection::Pong";
|
||||
|
||||
Reference in new issue
Block a user