diff --git a/server/client_data.cpp b/server/clients/client_data.cpp similarity index 77% rename from server/client_data.cpp rename to server/clients/client_data.cpp index 56eddc6..b2dd4fc 100644 --- a/server/client_data.cpp +++ b/server/clients/client_data.cpp @@ -21,6 +21,26 @@ */ #include "client_data.hpp" +ClientData::ClientData(IPaddress add) { + address = add; +} + +IPaddress ClientData::SetAddress(IPaddress add) { + return address = add; +} + +IPaddress ClientData::GetAddress() { + return address; +} + +ClientData::Clock::time_point ClientData::GetLastBeat() { + return lastBeat; +} + +int ClientData::GetAttempts() { + return attemptedBeats; +} + int ClientData::IncrementAttempts() { lastBeat = Clock::now(); return attemptedBeats++; diff --git a/server/client_data.hpp b/server/clients/client_data.hpp similarity index 82% rename from server/client_data.hpp rename to server/clients/client_data.hpp index 0af85ed..29b3f78 100644 --- a/server/client_data.hpp +++ b/server/clients/client_data.hpp @@ -26,21 +26,20 @@ #include -//TODO: ClientManager? class ClientData { public: typedef std::chrono::steady_clock Clock; ClientData() = default; - ClientData(IPaddress add): address(add) {} + ClientData(IPaddress add); ~ClientData() = default; - IPaddress SetAddress(IPaddress add) { return address = add; } - IPaddress GetAddress() { return address; } + IPaddress SetAddress(IPaddress add); + IPaddress GetAddress(); - Clock::time_point GetLastBeat() { return lastBeat; } + Clock::time_point GetLastBeat(); - int GetAttempts() { return attemptedBeats; } + int GetAttempts(); int IncrementAttempts(); int ResetAttempts(); diff --git a/server/clients/client_manager.cpp b/server/clients/client_manager.cpp new file mode 100644 index 0000000..e61090d --- /dev/null +++ b/server/clients/client_manager.cpp @@ -0,0 +1,68 @@ +/* Copyright: (c) Kayne Ruse 2014 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. +*/ +#include "client_manager.hpp" + +//TODO: client_manager.cpp + +int ClientManager::Create(IPaddress add) { + // +} + +int ClientManager::Load(IPaddress add) { + // +} + +int ClientManager::Save(int uid) { + // +} + +void ClientManager::Unload(int uid) { + // +} + +void ClientManager::Delete(int uid) { + // +} + +void ClientManager::UnloadAll() { + // +} + +void ClientManager::UnloadIf(std::function)> fn) { + // +} + +ClientData* ClientManager::Get(int uid) { + // +} + +int ClientManager::GetLoadedCount() { + // +} + +int ClientManager::GetTotalCount() { + // +} + +std::map* ClientManager::GetContainer() { + // +} \ No newline at end of file diff --git a/server/clients/client_manager.hpp b/server/clients/client_manager.hpp new file mode 100644 index 0000000..d5e7cec --- /dev/null +++ b/server/clients/client_manager.hpp @@ -0,0 +1,63 @@ +/* Copyright: (c) Kayne Ruse 2014 + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. +*/ +#ifndef CLIENTMANAGER_HPP_ +#define CLIENTMANAGER_HPP_ + +#include "client_data.hpp" +#include "manager_interface.hpp" +#include "singleton.hpp" + +#include "SDL/SDL_net.h" + +#include + +class ClientManager: + Singleton, + ManagerInterface +{ +public: + //common public methods + int Create(IPaddress); + int Load(IPaddress); + int Save(int uid); + void Unload(int uid); + void Delete(int uid); + + void UnloadAll(); + void UnloadIf(std::function)> fn); + + //accessors & mutators + ClientData* Get(int uid); + int GetLoadedCount(); + int GetTotalCount(); + std::map* GetContainer(); + +private: + friend Singleton; + + ClientManager() = default; + ~ClientManager() = default; + + int counter = 0; +}; + +#endif \ No newline at end of file diff --git a/server/clients/makefile b/server/clients/makefile new file mode 100644 index 0000000..2a5c671 --- /dev/null +++ b/server/clients/makefile @@ -0,0 +1,37 @@ +#config +INCLUDES+=. ../server_utilities ../../common/utilities +LIBS+= +CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) + +#source +CXXSRC=$(wildcard *.cpp) + +#objects +OBJDIR=obj +OBJ+=$(addprefix $(OBJDIR)/,$(CXXSRC:.cpp=.o)) + +#output +OUTDIR=.. +OUT=$(addprefix $(OUTDIR)/,server.a) + +#targets +all: $(OBJ) $(OUT) + ar -crs $(OUT) $(OBJ) + +$(OBJ): | $(OBJDIR) + +$(OUT): | $(OUTDIR) + +$(OBJDIR): + mkdir $(OBJDIR) + +$(OUTDIR): + mkdir $(OUTDIR) + +$(OBJDIR)/%.o: %.cpp + $(CXX) $(CXXFLAGS) -c -o $@ $< + +clean: + $(RM) *.o *.a *.exe + +rebuild: clean all