diff options
-rw-r--r-- | include/modules/server.h | 49 | ||||
-rw-r--r-- | src/modules/m_chanhistory.cpp | 4 | ||||
-rw-r--r-- | src/modules/m_filter.cpp | 7 | ||||
-rw-r--r-- | src/modules/m_sasl.cpp | 5 | ||||
-rw-r--r-- | src/modules/m_spanningtree/main.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_spanningtree/main.h | 20 | ||||
-rw-r--r-- | src/modules/m_spanningtree/netburst.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_spanningtree/treeserver.cpp | 4 | ||||
-rw-r--r-- | src/modules/m_spanningtree/utils.cpp | 2 |
9 files changed, 82 insertions, 21 deletions
diff --git a/include/modules/server.h b/include/modules/server.h index f9907ef26..6bd10b3e3 100644 --- a/include/modules/server.h +++ b/include/modules/server.h @@ -21,11 +21,19 @@ #include "event.h" -class ServerEventListener : public Events::ModuleEventListener +namespace ServerProtocol +{ + class BroadcastEventListener; + class LinkEventListener; + class SyncEventListener; +} + +class ServerProtocol::BroadcastEventListener + : public Events::ModuleEventListener { public: - ServerEventListener(Module* mod) - : ModuleEventListener(mod, "event/server") + BroadcastEventListener(Module* mod) + : ModuleEventListener(mod, "event/server-broadcast") { } @@ -36,6 +44,16 @@ class ServerEventListener : public Events::ModuleEventListener * send the message to the server or MOD_RES_PASSTHRU if no module handled the event. */ virtual ModResult OnBroadcastMessage(Channel* channel, const Server* server) { return MOD_RES_PASSTHRU; } +}; + +class ServerProtocol::LinkEventListener + : public Events::ModuleEventListener +{ + public: + LinkEventListener(Module* mod) + : ModuleEventListener(mod, "event/server-link") + { + } /** Fired when a server finishes burst * @param server Server that recently linked and finished burst @@ -46,6 +64,16 @@ class ServerEventListener : public Events::ModuleEventListener * @param server Server that split */ virtual void OnServerSplit(const Server* server) { } +}; + +class ServerProtocol::SyncEventListener + : public Events::ModuleEventListener +{ + public: + SyncEventListener(Module* mod) + : ModuleEventListener(mod, "event/server-sync") + { + } /** Allows modules to synchronize user metadata during a netburst. This will * be called for every user visible on your side of the burst. @@ -66,3 +94,18 @@ class ServerEventListener : public Events::ModuleEventListener */ virtual void OnSyncNetwork(ProtocolServer& server) { } }; + +/** Compatibility struct for <3.3.0 modules. */ +class ServerEventListener + : public ServerProtocol::BroadcastEventListener + , public ServerProtocol::LinkEventListener + , public ServerProtocol::SyncEventListener +{ + public: + ServerEventListener(Module* mod) + : ServerProtocol::BroadcastEventListener(mod) + , ServerProtocol::LinkEventListener(mod) + , ServerProtocol::SyncEventListener(mod) + { + } +}; diff --git a/src/modules/m_chanhistory.cpp b/src/modules/m_chanhistory.cpp index dffda8e72..227fda3c2 100644 --- a/src/modules/m_chanhistory.cpp +++ b/src/modules/m_chanhistory.cpp @@ -112,7 +112,7 @@ class HistoryMode : public ParamMode<HistoryMode, SimpleExtItem<HistoryList> > class ModuleChanHistory : public Module - , public ServerEventListener + , public ServerProtocol::BroadcastEventListener { HistoryMode m; bool sendnotice; @@ -125,7 +125,7 @@ class ModuleChanHistory public: ModuleChanHistory() - : ServerEventListener(this) + : ServerProtocol::BroadcastEventListener(this) , m(this) , botmode(this, "bot") , batchcap(this) diff --git a/src/modules/m_filter.cpp b/src/modules/m_filter.cpp index e7aab2eeb..6c2206993 100644 --- a/src/modules/m_filter.cpp +++ b/src/modules/m_filter.cpp @@ -173,7 +173,10 @@ class CommandFilter : public Command } }; -class ModuleFilter : public Module, public ServerEventListener, public Stats::EventListener +class ModuleFilter + : public Module + , public ServerProtocol::SyncEventListener + , public Stats::EventListener { typedef insp::flat_set<std::string, irc::insensitive_swo> ExemptTargetSet; @@ -332,7 +335,7 @@ bool ModuleFilter::AppliesToMe(User* user, FilterResult* filter, int iflags) } ModuleFilter::ModuleFilter() - : ServerEventListener(this) + : ServerProtocol::SyncEventListener(this) , Stats::EventListener(this) , initing(true) , filtcommand(this) diff --git a/src/modules/m_sasl.cpp b/src/modules/m_sasl.cpp index 54bb8a44a..2647b63e1 100644 --- a/src/modules/m_sasl.cpp +++ b/src/modules/m_sasl.cpp @@ -37,7 +37,8 @@ enum static std::string sasl_target; -class ServerTracker : public ServerEventListener +class ServerTracker + : public ServerProtocol::LinkEventListener { bool online; @@ -65,7 +66,7 @@ class ServerTracker : public ServerEventListener public: ServerTracker(Module* mod) - : ServerEventListener(mod) + : ServerProtocol::LinkEventListener(mod) { Reset(); } diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index 1a51955d1..f8531cb01 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -45,7 +45,9 @@ ModuleSpanningTree::ModuleSpanningTree() , map(this) , commands(this) , currmembid(0) - , eventprov(this, "event/server") + , broadcasteventprov(this, "event/server-broadcast") + , linkeventprov(this, "event/server-link") + , synceventprov(this, "event/server-sync") , sslapi(this) , DNS(this, "DNS") , tagevprov(this, "event/messagetag") @@ -687,7 +689,7 @@ void ModuleSpanningTree::OnUnloadModule(Module* mod) { TreeServer* server = i->second; if (!server->IsRoot()) - FOREACH_MOD_CUSTOM(GetEventProvider(), ServerEventListener, OnServerSplit, (server)); + FOREACH_MOD_CUSTOM(GetLinkEventProvider(), ServerProtocol::LinkEventListener, OnServerSplit, (server)); } return; } diff --git a/src/modules/m_spanningtree/main.h b/src/modules/m_spanningtree/main.h index 9a9d4733d..1aeffbc72 100644 --- a/src/modules/m_spanningtree/main.h +++ b/src/modules/m_spanningtree/main.h @@ -93,9 +93,14 @@ class ModuleSpanningTree */ SpanningTreeProtocolInterface protocolinterface; - /** Event provider for our events - */ - Events::ModuleEventProvider eventprov; + /** Event provider for our broadcast events. */ + Events::ModuleEventProvider broadcasteventprov; + + /** Event provider for our link events. */ + Events::ModuleEventProvider linkeventprov; + + /** Event provider for our sync events. */ + Events::ModuleEventProvider synceventprov; /** API for accessing user SSL certificates. */ UserCertificateAPI sslapi; @@ -158,7 +163,14 @@ class ModuleSpanningTree */ ModResult HandleConnect(const CommandBase::Params& parameters, User* user); - const Events::ModuleEventProvider& GetEventProvider() const { return eventprov; } + /** Retrieves the event provider for broadcast events. */ + const Events::ModuleEventProvider& GetBroadcastEventProvider() const { return broadcasteventprov; } + + /** Retrieves the event provider for link events. */ + const Events::ModuleEventProvider& GetLinkEventProvider() const { return linkeventprov; } + + /** Retrieves the event provider for sync events. */ + const Events::ModuleEventProvider& GetSyncEventProvider() const { return synceventprov; } /** ** *** MODULE EVENTS *** diff --git a/src/modules/m_spanningtree/netburst.cpp b/src/modules/m_spanningtree/netburst.cpp index ed15591e9..ca4d1a472 100644 --- a/src/modules/m_spanningtree/netburst.cpp +++ b/src/modules/m_spanningtree/netburst.cpp @@ -123,7 +123,7 @@ void TreeSocket::DoBurst(TreeServer* s) // Send all xlines this->SendXLines(); - FOREACH_MOD_CUSTOM(Utils->Creator->GetEventProvider(), ServerEventListener, OnSyncNetwork, (bs.server)); + FOREACH_MOD_CUSTOM(Utils->Creator->GetSyncEventProvider(), ServerProtocol::SyncEventListener, OnSyncNetwork, (bs.server)); this->WriteLine(CmdBuilder("ENDBURST")); ServerInstance->SNO->WriteToSnoMask('l',"Finished bursting to \002"+ s->GetName()+"\002."); @@ -265,7 +265,7 @@ void TreeSocket::SyncChannel(Channel* chan, BurstState& bs) this->WriteLine(CommandMetadata::Builder(chan, item->name, value)); } - FOREACH_MOD_CUSTOM(Utils->Creator->GetEventProvider(), ServerEventListener, OnSyncChannel, (chan, bs.server)); + FOREACH_MOD_CUSTOM(Utils->Creator->GetSyncEventProvider(), ServerProtocol::SyncEventListener, OnSyncChannel, (chan, bs.server)); } void TreeSocket::SyncChannel(Channel* chan) @@ -301,6 +301,6 @@ void TreeSocket::SendUsers(BurstState& bs) this->WriteLine(CommandMetadata::Builder(user, item->name, value)); } - FOREACH_MOD_CUSTOM(Utils->Creator->GetEventProvider(), ServerEventListener, OnSyncUser, (user, bs.server)); + FOREACH_MOD_CUSTOM(Utils->Creator->GetSyncEventProvider(), ServerProtocol::SyncEventListener, OnSyncUser, (user, bs.server)); } } diff --git a/src/modules/m_spanningtree/treeserver.cpp b/src/modules/m_spanningtree/treeserver.cpp index bbe66ff83..ec1fb079d 100644 --- a/src/modules/m_spanningtree/treeserver.cpp +++ b/src/modules/m_spanningtree/treeserver.cpp @@ -117,7 +117,7 @@ TreeServer::TreeServer(const std::string& Name, const std::string& Desc, const s this->AddHashEntry(); Parent->Children.push_back(this); - FOREACH_MOD_CUSTOM(Utils->Creator->GetEventProvider(), ServerEventListener, OnServerLink, (this)); + FOREACH_MOD_CUSTOM(Utils->Creator->GetLinkEventProvider(), ServerProtocol::LinkEventListener, OnServerLink, (this)); } void TreeServer::BeginBurst(uint64_t startms) @@ -207,7 +207,7 @@ void TreeServer::SQuitInternal(unsigned int& num_lost_servers) RemoveHash(); if (!Utils->Creator->dying) - FOREACH_MOD_CUSTOM(Utils->Creator->GetEventProvider(), ServerEventListener, OnServerSplit, (this)); + FOREACH_MOD_CUSTOM(Utils->Creator->GetLinkEventProvider(), ServerProtocol::LinkEventListener, OnServerSplit, (this)); } unsigned int TreeServer::QuitUsers(const std::string& reason) diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp index a18ec854d..5fbd16da0 100644 --- a/src/modules/m_spanningtree/utils.cpp +++ b/src/modules/m_spanningtree/utils.cpp @@ -171,7 +171,7 @@ void SpanningTreeUtilities::GetListOfServersForChannel(Channel* c, TreeSocketSet for (TreeServer::ChildServers::const_iterator i = children.begin(); i != children.end(); ++i) { ModResult result; - FIRST_MOD_RESULT_CUSTOM(Creator->GetEventProvider(), ServerEventListener, OnBroadcastMessage, result, (c, *i)); + FIRST_MOD_RESULT_CUSTOM(Creator->GetBroadcastEventProvider(), ServerProtocol::BroadcastEventListener, OnBroadcastMessage, result, (c, *i)); if (result == MOD_RES_ALLOW) list.insert((*i)->GetSocket()); } |