summaryrefslogtreecommitdiff
path: root/modules/commands/os_stats.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2014-06-23 09:45:15 -0400
committerAdam <Adam@anope.org>2014-06-23 09:45:15 -0400
commitfd9bb0ea7e3c8a39f1632c2ebbdc25d0fac192a0 (patch)
tree1d68e86065e0b012aee41533d4f9b289ee0707ac /modules/commands/os_stats.cpp
parent148b26f687ce85dc01e852a2358b03d493757ada (diff)
parent9a947fa4359c667be58ebae4634d9ac0e53d5db4 (diff)
Merge branch '2.0' into 2.1
Conflicts: cmake/Anope.cmake cmake/FindGettext.cmake include/access.h include/messages.h include/modes.h include/modules.h include/users.h modules/CMakeLists.txt modules/commands/bs_bot.cpp modules/commands/cs_access.cpp modules/commands/cs_ban.cpp modules/commands/cs_clone.cpp modules/commands/cs_flags.cpp modules/commands/cs_info.cpp modules/commands/cs_list.cpp modules/commands/cs_log.cpp modules/commands/cs_mode.cpp modules/commands/cs_status.cpp modules/commands/cs_suspend.cpp modules/commands/cs_updown.cpp modules/commands/cs_xop.cpp modules/commands/ms_check.cpp modules/commands/ns_access.cpp modules/commands/ns_cert.cpp modules/commands/ns_group.cpp modules/commands/ns_register.cpp modules/commands/ns_set.cpp modules/commands/ns_suspend.cpp modules/commands/os_session.cpp modules/commands/os_svs.cpp modules/extra/m_ldap_authentication.cpp modules/extra/m_regex_pcre.cpp modules/extra/m_sql_authentication.cpp modules/extra/stats/m_chanstats.cpp modules/protocol/bahamut.cpp modules/protocol/hybrid.cpp modules/protocol/inspircd12.cpp modules/protocol/inspircd20.cpp modules/protocol/unreal.cpp modules/pseudoclients/chanserv.cpp modules/pseudoclients/chanserv/channel.cpp modules/pseudoclients/nickserv/nickserv.cpp modules/webcpanel/pages/chanserv/access.cpp src/access.cpp src/bots.cpp src/channels.cpp src/language.cpp src/modes.cpp src/modulemanager.cpp src/process.cpp src/users.cpp src/version.sh
Diffstat (limited to 'modules/commands/os_stats.cpp')
-rw-r--r--modules/commands/os_stats.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/modules/commands/os_stats.cpp b/modules/commands/os_stats.cpp
index 1251226c3..a4a2a858a 100644
--- a/modules/commands/os_stats.cpp
+++ b/modules/commands/os_stats.cpp
@@ -14,7 +14,12 @@
struct Stats : Serializable
{
- Stats() : Serializable("Stats") { }
+ static Stats *me;
+
+ Stats() : Serializable("Stats")
+ {
+ me = this;
+ }
void Serialize(Serialize::Data &data) const override
{
@@ -26,10 +31,12 @@ struct Stats : Serializable
{
data["maxusercnt"] >> MaxUserCount;
data["maxusertime"] >> MaxUserTime;
- return NULL;
+ return me;
}
};
+Stats *Stats::me;
+
/**
* Count servers connected to server s
* @param s The server to start counting from
@@ -237,6 +244,7 @@ class CommandOSStats : public Command
};
class OSStats : public Module
+ , public EventHook<Event::UserConnect>
{
CommandOSStats commandosstats;
Serialize::Type stats_type;
@@ -244,11 +252,18 @@ class OSStats : public Module
public:
OSStats(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, VENDOR)
+ , EventHook<Event::UserConnect>("OnUserConnect")
, commandosstats(this)
, stats_type("Stats", Stats::Unserialize)
{
}
+
+ void OnUserConnect(User *u, bool &exempt) override
+ {
+ if (UserListByNick.size() == MaxUserCount && Anope::CurTime == MaxUserTime)
+ stats_saver.QueueUpdate();
+ }
};
MODULE_INIT(OSStats)