From 6f1c90720402415b62fb4d5e809ec7dbc1cd7f96 Mon Sep 17 00:00:00 2001 From: Loïc Blot Date: Tue, 26 Sep 2017 00:11:20 +0200 Subject: Implement mod communication channels (#6351) Implement network communication for channels * Implement ModChannel manager server side to route incoming messages from clients to other clients * Add signal handler switch on client & ModChannelMgr on client to handle channels * Add Lua API bindings + client packet sending + unittests * Implement server message sending * Add callback from received message handler to Lua API using registration method --- src/client.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/client.h') diff --git a/src/client.h b/src/client.h index 420d18895..36f564086 100644 --- a/src/client.h +++ b/src/client.h @@ -52,6 +52,7 @@ class IWritableNodeDefManager; //class IWritableCraftDefManager; class ClientMediaDownloader; struct MapDrawControl; +class ModChannelMgr; class MtEventManager; struct PointedThing; class MapDatabase; @@ -224,6 +225,8 @@ public: void handleCommand_LocalPlayerAnimations(NetworkPacket* pkt); void handleCommand_EyeOffset(NetworkPacket* pkt); void handleCommand_UpdatePlayerList(NetworkPacket* pkt); + void handleCommand_ModChannelMsg(NetworkPacket *pkt); + void handleCommand_ModChannelSignal(NetworkPacket *pkt); void handleCommand_SrpBytesSandB(NetworkPacket* pkt); void handleCommand_CSMFlavourLimits(NetworkPacket *pkt); @@ -424,6 +427,11 @@ public: return m_csm_noderange_limit; } + bool joinModChannel(const std::string &channel); + bool leaveModChannel(const std::string &channel); + bool sendModChannelMessage(const std::string &channel, const std::string &message); + ModChannel *getModChannel(const std::string &channel); + private: // Virtual methods from con::PeerHandler @@ -580,4 +588,6 @@ private: // CSM flavour limits byteflag u64 m_csm_flavour_limits = CSMFlavourLimit::CSM_FL_NONE; u32 m_csm_noderange_limit = 8; + + std::unique_ptr m_modchannel_mgr; }; -- cgit v1.2.3