diff --git a/src/network/client_network_manager.cpp b/src/network/client_network_manager.cpp index 952a05773..e4672a112 100644 --- a/src/network/client_network_manager.cpp +++ b/src/network/client_network_manager.cpp @@ -55,6 +55,12 @@ void* waitInput(void* data) { ProtocolManager::getInstance()->requestStart(new ConnectToServer(n)); } + else + { + NetworkString msg("\0\0"); + msg += str; + NetworkManager::getInstance()->getPeers()[0]->sendPacket(msg); + } } exit(0); diff --git a/src/network/protocol_manager.cpp b/src/network/protocol_manager.cpp index e61a61146..2c3eb3372 100644 --- a/src/network/protocol_manager.cpp +++ b/src/network/protocol_manager.cpp @@ -244,8 +244,7 @@ void ProtocolManager::update() if (event->type == EVENT_TYPE_MESSAGE) { if (event->data.size() > 0) - searchedProtocol = (PROTOCOL_TYPE)(event->data.getUInt8(0)); - event->removeFront(1); // remove the first byte which indicates the protocol + searchedProtocol = (PROTOCOL_TYPE)(event->data.getAndRemoveUInt8()); } if (event->type == EVENT_TYPE_CONNECTED) { @@ -256,6 +255,10 @@ void ProtocolManager::update() if (m_protocols[i].protocol->getProtocolType() == searchedProtocol || event->type == EVENT_TYPE_DISCONNECTED) // pass data to protocols even when paused m_protocols[i].protocol->notifyEvent(event); } + if (searchedProtocol == PROTOCOL_NONE) // no protocol was aimed, show the msg to debug + { + Log::debug("ProtocolManager", "Message is \"%s\"", event->data.c_str()); + } delete event; } diff --git a/src/network/server_network_manager.cpp b/src/network/server_network_manager.cpp index c4c82b9a3..23e911584 100644 --- a/src/network/server_network_manager.cpp +++ b/src/network/server_network_manager.cpp @@ -46,6 +46,10 @@ void* waitInput2(void* data) { stop = true; } + else if (str == "kickall") + { + ServerNetworkManager::getInstance()->kickAllPlayers(); + } } uint32_t id = ProtocolManager::getInstance()->requestStart(new StopServer()); @@ -89,9 +93,12 @@ void ServerNetworkManager::run() NetworkManager::run(); } -void ServerNetworkManager::start() +void ServerNetworkManager::kickAllPlayers() { - + for (int i = 0; i < m_peers.size(); i++) + { + m_peers[i]->disconnect(); + } } void ServerNetworkManager::sendPacket(const NetworkString& data) diff --git a/src/network/server_network_manager.hpp b/src/network/server_network_manager.hpp index e06b969b9..aadc8c7e5 100644 --- a/src/network/server_network_manager.hpp +++ b/src/network/server_network_manager.hpp @@ -33,7 +33,7 @@ class ServerNetworkManager : public NetworkManager virtual void run(); - void start(); + void kickAllPlayers(); virtual void sendPacket(const NetworkString& data);