diff options
| author | Shauren <shauren.trinity@gmail.com> | 2014-10-18 17:03:30 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2014-10-18 17:03:30 +0200 |
| commit | 8936723291985d1759a4903901c7a29cc54fdcbf (patch) | |
| tree | 2ca2331742863ef6318697075aad5ff3f8e76715 /src/server/bnetserver/Packets/ConnectionPackets.cpp | |
| parent | 3ee9961ecce2a745134eeefa45b29109a276e49f (diff) | |
| parent | 4a0be2bffc21e30624122ec5f36d6c8479f83385 (diff) | |
Merge branch '4.3.4' of https://github.com/TrinityCore/TrinityCore into 6.x
Conflicts:
dep/PackageList.txt
src/server/bnetserver/Packets/WoWRealmPackets.cpp
src/server/bnetserver/Server/Session.cpp
Diffstat (limited to 'src/server/bnetserver/Packets/ConnectionPackets.cpp')
| -rw-r--r-- | src/server/bnetserver/Packets/ConnectionPackets.cpp | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/src/server/bnetserver/Packets/ConnectionPackets.cpp b/src/server/bnetserver/Packets/ConnectionPackets.cpp new file mode 100644 index 00000000000..3b7a9949552 --- /dev/null +++ b/src/server/bnetserver/Packets/ConnectionPackets.cpp @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "Session.h" +#include "ConnectionPackets.h" + +std::string Battlenet::Connection::Ping::ToString() const +{ + return "Battlenet::Connection::Ping"; +} + +void Battlenet::Connection::Ping::CallHandler(Session* session) +{ + session->HandlePing(*this); +} + +std::string Battlenet::Connection::EnableEncryption::ToString() const +{ + return "Battlenet::Connection::EnableEncryption"; +} + +void Battlenet::Connection::EnableEncryption::CallHandler(Session* session) +{ + session->HandleEnableEncryption(*this); +} + +std::string Battlenet::Connection::LogoutRequest::ToString() const +{ + return "Battlenet::Connection::LogoutRequest"; +} + +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() +{ + Packets.resize(_stream.Read<uint8>(6)); + for (size_t i = 0; i < Packets.size(); ++i) + { + PacketInfo& info = Packets[i]; + info.CommandName = _stream.ReadFourCC(); + info.Timestamp = _stream.Read<uint32>(32); + info.Size = _stream.Read<uint32>(16); + info.Channel = _stream.ReadFourCC(); + info.LayerId = _stream.Read<uint32>(16); + } + + Reason = _stream.Read<ClosingReason>(4); + _stream.ReadBytes(_stream.Read<uint8>(8)); // BadData + + 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); +} + +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"; +} |
