Created ClientManager

This commit is contained in:
Kayne Ruse
2014-10-30 00:21:55 +11:00
parent 4434900afc
commit 0735037f10
5 changed files with 193 additions and 6 deletions
@@ -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++;
@@ -26,21 +26,20 @@
#include <chrono>
//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();
+68
View File
@@ -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<bool(std::pair<const int, ClientData>)> fn) {
//
}
ClientData* ClientManager::Get(int uid) {
//
}
int ClientManager::GetLoadedCount() {
//
}
int ClientManager::GetTotalCount() {
//
}
std::map<int, ClientData>* ClientManager::GetContainer() {
//
}
+63
View File
@@ -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 <functional>
class ClientManager:
Singleton<ClientManager>,
ManagerInterface<ClientData, IPaddress>
{
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<bool(std::pair<const int, ClientData>)> fn);
//accessors & mutators
ClientData* Get(int uid);
int GetLoadedCount();
int GetTotalCount();
std::map<int, ClientData>* GetContainer();
private:
friend Singleton<ClientManager>;
ClientManager() = default;
~ClientManager() = default;
int counter = 0;
};
#endif
+37
View File
@@ -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