diff options
Diffstat (limited to 'src/usermanager.cpp')
-rw-r--r-- | src/usermanager.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/usermanager.cpp b/src/usermanager.cpp index 3bf17cda2..2bb4ee685 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -15,3 +15,61 @@ #include "inspircd.h" +void UserManager::AddLocalClone(User *user) +{ + clonemap::iterator x = local_clones.find(user->GetIPString()); + if (x != local_clones.end()) + x->second++; + else + local_clones[user->GetIPString()] = 1; +} + +void UserManager::AddGlobalClone(User *user) +{ + clonemap::iterator y = global_clones.find(user->GetIPString()); + if (y != global_clones.end()) + y->second++; + else + global_clones[user->GetIPString()] = 1; +} + +void UserManager::RemoveCloneCounts(User *user) +{ + clonemap::iterator x = local_clones.find(user->GetIPString()); + if (x != local_clones.end()) + { + x->second--; + if (!x->second) + { + local_clones.erase(x); + } + } + + clonemap::iterator y = global_clones.find(user->GetIPString()); + if (y != global_clones.end()) + { + y->second--; + if (!y->second) + { + global_clones.erase(y); + } + } +} + +unsigned long UserManager::GlobalCloneCount(User *user) +{ + clonemap::iterator x = global_clones.find(user->GetIPString()); + if (x != global_clones.end()) + return x->second; + else + return 0; +} + +unsigned long UserManager::LocalCloneCount(User *user) +{ + clonemap::iterator x = local_clones.find(user->GetIPString()); + if (x != local_clones.end()) + return x->second; + else + return 0; +} |