diff options
| author | leak <leak@bitmx.net> | 2014-08-11 17:28:10 +0200 |
|---|---|---|
| committer | leak <leak@bitmx.net> | 2014-08-11 17:40:43 +0200 |
| commit | 1a27ce1267bb3dd93dd9ad67a69f550aed998790 (patch) | |
| tree | 24b8a0b73c0cd7b43492e7b904e1ee0a1d0cb552 /src/server/game/Scripting | |
| parent | d89a40df859f858a62ddf522848225034e73976d (diff) | |
Core/NetworkIO: Restore networking related scripting hooks
Closes #12607
Diffstat (limited to 'src/server/game/Scripting')
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 23 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 19 |
2 files changed, 21 insertions, 21 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 0d1983ab463..fa83c4b112d 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -32,6 +32,7 @@ #include "CreatureAIImpl.h" #include "Player.h" #include "WorldPacket.h" +#include "WorldSession.h" namespace { @@ -407,44 +408,42 @@ void ScriptMgr::OnSocketOpen(std::shared_ptr<WorldSocket> socket) FOREACH_SCRIPT(ServerScript)->OnSocketOpen(socket); } -void ScriptMgr::OnSocketClose(std::shared_ptr<WorldSocket> socket, bool wasNew) +void ScriptMgr::OnSocketClose(std::shared_ptr<WorldSocket> socket) { ASSERT(socket); - FOREACH_SCRIPT(ServerScript)->OnSocketClose(socket, wasNew); + FOREACH_SCRIPT(ServerScript)->OnSocketClose(socket); } -void ScriptMgr::OnPacketReceive(std::shared_ptr<WorldSocket> socket, WorldPacket const& packet) +void ScriptMgr::OnPacketReceive(WorldSession* session, WorldPacket const& packet) { - ASSERT(socket); - if (SCR_REG_LST(ServerScript).empty()) return; WorldPacket copy(packet); - FOREACH_SCRIPT(ServerScript)->OnPacketReceive(socket, copy); + FOREACH_SCRIPT(ServerScript)->OnPacketReceive(session, copy); } -void ScriptMgr::OnPacketSend(std::shared_ptr<WorldSocket> socket, WorldPacket const& packet) +void ScriptMgr::OnPacketSend(WorldSession* session, WorldPacket const& packet) { - ASSERT(socket); + ASSERT(session); if (SCR_REG_LST(ServerScript).empty()) return; WorldPacket copy(packet); - FOREACH_SCRIPT(ServerScript)->OnPacketSend(socket, copy); + FOREACH_SCRIPT(ServerScript)->OnPacketSend(session, copy); } -void ScriptMgr::OnUnknownPacketReceive(std::shared_ptr<WorldSocket> socket, WorldPacket const& packet) +void ScriptMgr::OnUnknownPacketReceive(WorldSession* session, WorldPacket const& packet) { - ASSERT(socket); + ASSERT(session); if (SCR_REG_LST(ServerScript).empty()) return; WorldPacket copy(packet); - FOREACH_SCRIPT(ServerScript)->OnUnknownPacketReceive(socket, copy); + FOREACH_SCRIPT(ServerScript)->OnUnknownPacketReceive(session, copy); } void ScriptMgr::OnOpenStateChange(bool open) diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 68960d1ac92..615b1d3bb06 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -59,6 +59,7 @@ class Vehicle; class WorldPacket; class WorldSocket; class WorldObject; +class WorldSession; struct AchievementCriteriaData; struct AuctionEntry; @@ -225,19 +226,19 @@ class ServerScript : public ScriptObject // Called when a socket is closed. Do not store the socket object, and do not rely on the connection // being open; it is not. - virtual void OnSocketClose(std::shared_ptr<WorldSocket> /*socket*/, bool /*wasNew*/) { } + virtual void OnSocketClose(std::shared_ptr<WorldSocket> /*socket*/) { } // Called when a packet is sent to a client. The packet object is a copy of the original packet, so reading // and modifying it is safe. - virtual void OnPacketSend(std::shared_ptr<WorldSocket> /*socket*/, WorldPacket& /*packet*/) { } + virtual void OnPacketSend(WorldSession* /*session*/, WorldPacket& /*packet*/) { } // Called when a (valid) packet is received by a client. The packet object is a copy of the original packet, so - // reading and modifying it is safe. - virtual void OnPacketReceive(std::shared_ptr<WorldSocket> /*socket*/, WorldPacket& /*packet*/) { } + // reading and modifying it is safe. Make sure to check WorldSession pointer before usage, it might be null in case of auth packets + virtual void OnPacketReceive(WorldSession* /*session*/, WorldPacket& /*packet*/) { } // Called when an invalid (unknown opcode) packet is received by a client. The packet is a reference to the orignal // packet; not a copy. This allows you to actually handle unknown packets (for whatever purpose). - virtual void OnUnknownPacketReceive(std::shared_ptr<WorldSocket> /*socket*/, WorldPacket& /*packet*/) { } + virtual void OnUnknownPacketReceive(WorldSession* /*session*/, WorldPacket& /*packet*/) { } }; class WorldScript : public ScriptObject @@ -909,10 +910,10 @@ class ScriptMgr void OnNetworkStart(); void OnNetworkStop(); void OnSocketOpen(std::shared_ptr<WorldSocket> socket); - void OnSocketClose(std::shared_ptr<WorldSocket> socket, bool wasNew); - void OnPacketReceive(std::shared_ptr<WorldSocket> socket, WorldPacket const& packet); - void OnPacketSend(std::shared_ptr<WorldSocket> socket, WorldPacket const& packet); - void OnUnknownPacketReceive(std::shared_ptr<WorldSocket> socket, WorldPacket const& packet); + void OnSocketClose(std::shared_ptr<WorldSocket> socket); + void OnPacketReceive(WorldSession* session, WorldPacket const& packet); + void OnPacketSend(WorldSession* session, WorldPacket const& packet); + void OnUnknownPacketReceive(WorldSession* session, WorldPacket const& packet); public: /* WorldScript */ |
