X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fm_monitor.cpp;h=823a6fe5dc9a0560330ec1abe8a12c0308ad6771;hb=b4a174ee9c32d62ea6bf010e837e8c5b1c3d36a3;hp=139c70e7646697016ac9faaadc08eda376fd73f5;hpb=dea3aaa2d9af70e1ab018a1d33febd9e7ad64a6b;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_monitor.cpp b/src/modules/m_monitor.cpp index 139c70e76..823a6fe5d 100644 --- a/src/modules/m_monitor.cpp +++ b/src/modules/m_monitor.cpp @@ -1,6 +1,8 @@ /* * InspIRCd -- Internet Relay Chat Daemon * + * Copyright (C) 2019 Robby + * Copyright (C) 2018-2019 Sadie Powell * Copyright (C) 2016 Attila Molnar * * This file is part of InspIRCd. InspIRCd is free software: you can @@ -79,15 +81,12 @@ class IRCv3::Monitor::Manager void unset(Extensible* container) { - free(unset_raw(container)); + free(container, unset_raw(container)); } - std::string serialize(SerializeFormat format, const Extensible* container, void* item) const + std::string ToInternal(const Extensible* container, void* item) const CXX11_OVERRIDE { std::string ret; - if (format == FORMAT_NETWORK) - return ret; - const ExtData* extdata = static_cast(item); for (WatchedList::const_iterator i = extdata->list.begin(); i != extdata->list.end(); ++i) { @@ -99,9 +98,9 @@ class IRCv3::Monitor::Manager return ret; } - void unserialize(SerializeFormat format, Extensible* container, const std::string& value); + void FromInternal(Extensible* container, const std::string& value) CXX11_OVERRIDE; - void free(void* item) + void free(Extensible* container, void* item) CXX11_OVERRIDE { delete static_cast(item); } @@ -191,7 +190,7 @@ class IRCv3::Monitor::Manager } private: - typedef TR1NS::unordered_map NickHash; + typedef TR1NS::unordered_map NickHash; Entry* Find(const std::string& nick) { @@ -240,16 +239,13 @@ class IRCv3::Monitor::Manager return &extdata->list; } - NickHash nicks; - ExtItem ext; - WatchedList emptywatchedlist; + NickHash nicks; + ExtItem ext; + WatchedList emptywatchedlist; }; -void IRCv3::Monitor::Manager::ExtItem::unserialize(SerializeFormat format, Extensible* container, const std::string& value) +void IRCv3::Monitor::Manager::ExtItem::FromInternal(Extensible* container, const std::string& value) { - if (format == FORMAT_NETWORK) - return; - irc::spacesepstream ss(value); for (std::string nick; ss.GetToken(nick); ) manager.Watch(static_cast(container), nick, UINT_MAX); @@ -285,7 +281,7 @@ class CommandMonitor : public SplitCommand if (result == IRCv3::Monitor::Manager::WR_TOOMANY) { // List is full, send error which includes the remaining nicks that were not processed - user->WriteNumeric(ERR_MONLISTFULL, "%u %s%s%s :Monitor list is full", maxmonitor, nick.c_str(), (ss.StreamEnd() ? "" : ","), ss.GetRemaining().c_str()); + user->WriteNumeric(ERR_MONLISTFULL, maxmonitor, InspIRCd::Format("%s%s%s", nick.c_str(), (ss.StreamEnd() ? "" : ","), ss.GetRemaining().c_str()), "Monitor list is full"); break; } else if (result != IRCv3::Monitor::Manager::WR_OK) @@ -315,10 +311,10 @@ class CommandMonitor : public SplitCommand { Penalty = 2; allow_empty_last_param = false; - syntax = "[C|L|S|+ [,]|- [,]"; + syntax = "C|L|S|(+|-) [,]+"; } - CmdResult HandleLocal(const std::vector& parameters, LocalUser* user) + CmdResult HandleLocal(LocalUser* user, const Params& parameters) CXX11_OVERRIDE { char subcmd = toupper(parameters[0][0]); if (subcmd == '+') @@ -346,7 +342,7 @@ class CommandMonitor : public SplitCommand out.Add(entry->GetNick()); } out.Flush(); - user->WriteNumeric(RPL_ENDOFMONLIST, ":End of MONITOR list"); + user->WriteNumeric(RPL_ENDOFMONLIST, "End of MONITOR list"); } else if (subcmd == 'S') { @@ -401,7 +397,7 @@ class ModuleMonitor : public Module void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE { ConfigTag* tag = ServerInstance->Config->ConfValue("monitor"); - cmd.maxmonitor = tag->getInt("maxentries", 30, 1); + cmd.maxmonitor = tag->getUInt("maxentries", 30, 1); } void OnPostConnect(User* user) CXX11_OVERRIDE @@ -434,7 +430,7 @@ class ModuleMonitor : public Module Version GetVersion() CXX11_OVERRIDE { - return Version("Provides MONITOR support", VF_VENDOR); + return Version("Adds the /MONITOR command which allows users to find out when their friends are connected to the server.", VF_VENDOR); } };