r5sdk/r5dev/networksystem/bansystem.h
Kawe Mazidjatari 532b4125d5 More thread safety improvements
* Run 'CHostState::Think()' in the main thread.
* Construct 'NetGameServer_t' objects in main thread before dispatching (TODO: browser).
* Dispatch the call to 'CBanSystem::AddConnectionRefuse' from 'SV_IsClientBanned' to the main thread if we aren't main.
* Return bool for CBanSystem::AddEntry and CBanSystem::DeleteEntry for future optimizations (next commit).
2022-08-27 23:45:58 +02:00

30 lines
775 B
C++

#pragma once
class CBanSystem
{
public:
CBanSystem(void);
void operator[](std::pair<const string&, const uint64_t> pair);
void Load(void);
void Save(void) const;
bool AddEntry(const string& svIpAddress, const uint64_t nOriginID);
bool DeleteEntry(const string& svIpAddress, const uint64_t nOriginID);
void AddConnectionRefuse(const string& svError, const uint64_t nOriginID);
void DeleteConnectionRefuse(const uint64_t nOriginID);
void BanListCheck(void);
bool IsBanned(const string& svIpAddress, const uint64_t nOriginID) const;
bool IsRefuseListValid(void) const;
bool IsBanListValid(void) const;
private:
vector<std::pair<string, uint64_t>> m_vRefuseList = {};
vector<std::pair<string, uint64_t>> m_vBanList = {};
};
extern CBanSystem* g_pBanSystem;