From 5577387d61b387f1396469b88dcb0af53f16ed02 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Wed, 3 Sep 2014 00:53:55 +1000 Subject: [PATCH] Added basic hearbeat framework --- client/scenes/in_world.cpp | 17 +++++++++++++++++ client/scenes/in_world.hpp | 2 ++ server/server_application.hpp | 2 ++ server/server_logic.cpp | 6 ++++++ server/server_methods.cpp | 10 ++++++++++ 5 files changed, 37 insertions(+) diff --git a/client/scenes/in_world.cpp b/client/scenes/in_world.cpp index ac7b255..3c20ad6 100644 --- a/client/scenes/in_world.cpp +++ b/client/scenes/in_world.cpp @@ -270,6 +270,12 @@ void InWorld::KeyUp(SDL_KeyboardEvent const& key) { void InWorld::HandlePacket(SerialPacket* const argPacket) { switch(argPacket->type) { + case SerialPacketType::PING: + HandlePing(static_cast(argPacket)); + break; + case SerialPacketType::PONG: + HandlePong(static_cast(argPacket)); + break; case SerialPacketType::DISCONNECT: HandleDisconnect(static_cast(argPacket)); break; @@ -292,6 +298,17 @@ void InWorld::HandlePacket(SerialPacket* const argPacket) { } } +void InWorld::HandlePing(ServerPacket* const argPacket) { + ServerPacket newPacket; + newPacket.type = SerialPacketType::PONG; + network.SendTo(&argPacket->srcAddress, &newPacket); +} + +void InWorld::HandlePong(ServerPacket* const argPacket) { + //TODO: InWorld::HandlePong() +} + + void InWorld::HandleDisconnect(ClientPacket* const argPacket) { //TODO: More needed in the disconnection SetNextScene(SceneList::CLEANUP); diff --git a/client/scenes/in_world.hpp b/client/scenes/in_world.hpp index 633ffc0..a2479b7 100644 --- a/client/scenes/in_world.hpp +++ b/client/scenes/in_world.hpp @@ -75,6 +75,8 @@ protected: //Network handlers void HandlePacket(SerialPacket* const); + void HandlePing(ServerPacket* const); + void HandlePong(ServerPacket* const); void HandleDisconnect(ClientPacket* const); void HandleCharacterNew(CharacterPacket* const); void HandleCharacterDelete(CharacterPacket* const); diff --git a/server/server_application.hpp b/server/server_application.hpp index acccb5c..df68357 100644 --- a/server/server_application.hpp +++ b/server/server_application.hpp @@ -61,6 +61,8 @@ private: void HandlePacket(SerialPacket* const); //basic connections + void HandlePing(ServerPacket* const); + void HandlePong(ServerPacket* const); void HandleBroadcastRequest(ServerPacket* const); void HandleJoinRequest(ClientPacket* const); void HandleDisconnect(ClientPacket* const); diff --git a/server/server_logic.cpp b/server/server_logic.cpp index 8fa450f..49dc68b 100644 --- a/server/server_logic.cpp +++ b/server/server_logic.cpp @@ -178,6 +178,12 @@ void ServerApplication::Quit() { void ServerApplication::HandlePacket(SerialPacket* const argPacket) { switch(argPacket->type) { //basic connections + case SerialPacketType::PING: + HandlePing(static_cast(argPacket)); + break; + case SerialPacketType::PONG: + HandlePong(static_cast(argPacket)); + break; case SerialPacketType::BROADCAST_REQUEST: HandleBroadcastRequest(static_cast(argPacket)); break; diff --git a/server/server_methods.cpp b/server/server_methods.cpp index 9a6beba..4358e15 100644 --- a/server/server_methods.cpp +++ b/server/server_methods.cpp @@ -27,6 +27,16 @@ //basic connections //------------------------- +void ServerApplication::HandlePing(ServerPacket* const argPacket) { + ServerPacket newPacket; + newPacket.type = SerialPacketType::PONG; + network.SendTo(&argPacket->srcAddress, &newPacket); +} + +void ServerApplication::HandlePong(ServerPacket* const argPacket) { + //TODO: ServerApplications::HandlePong() +} + void ServerApplication::HandleBroadcastRequest(ServerPacket* const argPacket) { //send the server's data ServerPacket newPacket;