added stuff for user-nick map

pull/14/head
Tom Early 6 years ago
parent 8a0e29a24e
commit f06f454d46

@ -73,6 +73,19 @@ std::string CCacheManager::findGateAddress(const std::string &gate)
return addr; return addr;
} }
std::string CCacheManager::findNameNick(const std::string &name)
{
std::string nick;
if (name.empty())
return nick;
mux.unlock();
auto itn = NameNick.find(name);
if (itn != NameNick.end())
nick.assign(itn->second);
mux.unlock();
return nick;
}
void CCacheManager::updateUser(const std::string &user, const std::string &rptr, const std::string &gate, const std::string &addr, const std::string &time) void CCacheManager::updateUser(const std::string &user, const std::string &rptr, const std::string &gate, const std::string &addr, const std::string &time)
{ {
if (user.empty()) if (user.empty())
@ -140,6 +153,38 @@ void CCacheManager::updateGate(const std::string &G, const std::string &addr)
mux.unlock(); mux.unlock();
} }
void CCacheManager::updateName(const std::string &name, const std::string &nick)
{
if (name.empty() || nick.empty())
return;
mux.lock();
NameNick[name] = nick;
mux.unlock();
}
void CCacheManager::eraseGate(const std::string &gate)
{
mux.lock();
GateIPV4.erase(gate);
GateIPV6.erase(gate);
mux.unlock();
}
void CCacheManager::eraseName(const std::string &name)
{
mux.lock();
NameNick.erase(name);
mux.unlock();
}
void CCacheManager::clearGate()
{
mux.lock();
GateIPV4.clear();
GateIPV6.clear();
mux.unlock();
}
// these last three functions are private and not mux locked. // these last three functions are private and not mux locked.
std::string CCacheManager::findUserRptr(const std::string &user) std::string CCacheManager::findUserRptr(const std::string &user)
{ {

@ -27,18 +27,23 @@ public:
CCacheManager() {} CCacheManager() {}
~CCacheManager() {} ~CCacheManager() {}
// the bodies of these public functions need to be mux locked to access the maps and the private functions. // the bodies of these public functions are mux locked to access the maps and the private functions.
// for these find functions, if a map value can't be found the returned string will be empty. // for these find functions, if a map value can't be found the returned string will be empty.
void findUserData(const std::string &user, std::string &rptr, std::string &gate, std::string &addr); void findUserData(const std::string &user, std::string &rptr, std::string &gate, std::string &addr);
void findRptrData(const std::string &rptr, std::string &gate, std::string &addr); void findRptrData(const std::string &rptr, std::string &gate, std::string &addr);
std::string findUserTime(const std::string &user); std::string findUserTime(const std::string &user);
std::string findUserAddr(const std::string &user); std::string findUserAddr(const std::string &user);
std::string findNameNick(const std::string &name);
std::string findUserRepeater(const std::string &user); std::string findUserRepeater(const std::string &user);
std::string findGateAddress(const std::string &gate); std::string findGateAddress(const std::string &gate);
void eraseGate(const std::string &gate);
void eraseName(const std::string &name);
void clearGate();
void updateUser(const std::string &user, const std::string &rptr, const std::string &gate, const std::string &addr, const std::string &time); void updateUser(const std::string &user, const std::string &rptr, const std::string &gate, const std::string &addr, const std::string &time);
void updateRptr(const std::string &rptr, const std::string &gate, const std::string &addr); void updateRptr(const std::string &rptr, const std::string &gate, const std::string &addr);
void updateGate(const std::string &gate, const std::string &addr); void updateGate(const std::string &gate, const std::string &addr);
void updateName(const std::string &name, const std::string &nick);
private: private:
// these three functions aren't mux locked, that's why they're private // these three functions aren't mux locked, that's why they're private
@ -51,5 +56,6 @@ private:
std::unordered_map<std::string, std::string> RptrGate; std::unordered_map<std::string, std::string> RptrGate;
std::unordered_map<std::string, std::string> GateIPV4; std::unordered_map<std::string, std::string> GateIPV4;
std::unordered_map<std::string, std::string> GateIPV6; std::unordered_map<std::string, std::string> GateIPV6;
std::unordered_map<std::string, std::string> NameNick;
std::mutex mux; std::mutex mux;
}; };

Loading…
Cancel
Save

Powered by TurnKey Linux.