summaryrefslogtreecommitdiff
path: root/src/usermanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/usermanager.cpp')
-rw-r--r--src/usermanager.cpp58
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;
+}