#pragma once ////////////////////////////////////////////////////////////////////////// #include #include #include #include "context.h" enum { MAP_NOTE, MAP_LOCATION, MAP_LEVEL, MAP_AUTH, }; #pragma pack(push, 1) class _ClientValue { public: char Note[64]; char Location[64]; char Level; char IP[46]; char InstallTime[20]; char LastLoginTime[20]; char OsName[32]; char Authorized; uint64_t ID; char Reserved[768]; _ClientValue() { memset(this, 0, sizeof(_ClientValue)); } }; #pragma pack(pop) typedef uint64_t ClientKey; typedef _ClientValue ClientValue; typedef std::unordered_map ClientMap; class _ClientList { public: virtual ~_ClientList() {} virtual bool Exists(ClientKey key) = 0; virtual CString GetClientMapData(ClientKey key, int typ) = 0; virtual int GetClientMapInteger(ClientKey key, int typ) = 0; virtual void SetClientMapInteger(ClientKey key, int typ, int value) = 0; virtual void SetClientMapData(ClientKey key, int typ, const char* value) = 0; virtual void SaveClientMapData(context* ctx) = 0; virtual std::vector> GetAll() = 0; virtual void SaveToFile(const std::string& filename) = 0; virtual void LoadFromFile(const std::string& filename) = 0; }; _ClientList* NewClientList();