summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/modules/server.h49
-rw-r--r--src/modules/m_chanhistory.cpp4
-rw-r--r--src/modules/m_filter.cpp7
-rw-r--r--src/modules/m_sasl.cpp5
-rw-r--r--src/modules/m_spanningtree/main.cpp6
-rw-r--r--src/modules/m_spanningtree/main.h20
-rw-r--r--src/modules/m_spanningtree/netburst.cpp6
-rw-r--r--src/modules/m_spanningtree/treeserver.cpp4
-rw-r--r--src/modules/m_spanningtree/utils.cpp2
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());
}