+
+class ModuleWhoWas : public Module
+{
+ CommandWhowas cmd;
+ public:
+ ModuleWhoWas() : cmd(this)
+ {
+ }
+
+ void init()
+ {
+ ServerInstance->AddCommand(&cmd);
+ }
+
+ void OnRequest(Request& request)
+ {
+ WhowasRequest& req = static_cast<WhowasRequest&>(request);
+ switch (req.type)
+ {
+ case WhowasRequest::WHOWAS_ADD:
+ cmd.AddToWhoWas(req.user);
+ break;
+ case WhowasRequest::WHOWAS_STATS:
+ req.value = cmd.GetStats();
+ break;
+ case WhowasRequest::WHOWAS_PRUNE:
+ cmd.PruneWhoWas(ServerInstance->Time());
+ break;
+ case WhowasRequest::WHOWAS_MAINTAIN:
+ cmd.MaintainWhoWas(ServerInstance->Time());
+ break;
+ }
+ }
+
+ Version GetVersion()
+ {
+ return Version("WHOWAS Command", VF_VENDOR);
+ }
+};
+
+MODULE_INIT(ModuleWhoWas)