]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Convert the spanningtree events to use the new cross-module event system
authorAttila Molnar <attilamolnar@hush.com>
Wed, 11 Feb 2015 16:23:08 +0000 (17:23 +0100)
committerAttila Molnar <attilamolnar@hush.com>
Wed, 11 Feb 2015 16:23:08 +0000 (17:23 +0100)
include/modules/spanningtree.h
src/modules/m_spanningtree/main.cpp
src/modules/m_spanningtree/main.h
src/modules/m_spanningtree/treeserver.cpp

index 99f4f9fc40cf83d3a4df2d555146d7616817fd20..0f51c35db27a35f22826e58e39a7f97ccf1d2588 100644 (file)
 
 #pragma once
 
-struct AddServerEvent : public Event
-{
-       const std::string servername;
-       AddServerEvent(Module* me, const std::string& name)
-               : Event(me, "new_server"), servername(name)
-       {
-               Send();
-       }
-};
+#include "event.h"
 
-struct DelServerEvent : public Event
+class SpanningTreeEventListener : public Events::ModuleEventListener
 {
-       const std::string servername;
-       DelServerEvent(Module* me, const std::string& name)
-               : Event(me, "lost_server"), servername(name)
+ public:
+       SpanningTreeEventListener(Module* mod)
+               : ModuleEventListener(mod, "event/spanningtree")
        {
-               Send();
        }
+
+       /** Fired when a server finishes burst
+        * @param server Server that recently linked and finished burst
+        */
+       virtual void OnServerLink(const std::string& server) { }
+
+        /** Fired when a server splits
+         * @param server Server that split
+         */
+       virtual void OnServerSplit(const std::string& server) { }
 };
index 31d8227894205f00edd71f48fcad0ee23b4e623c..e5e6e522bf8216b837b3cdbffb52cee60e0c21fd 100644 (file)
@@ -39,6 +39,7 @@ ModuleSpanningTree::ModuleSpanningTree()
        : rconnect(this), rsquit(this), map(this)
        , commands(NULL)
        , currmembid(0)
+       , eventprov(this, "event/spanningtree")
        , DNS(this, "DNS")
        , loopCall(false)
 {
index 13c743f731387cd4ecdabd8851cd981c85120643..9fde32cadd75dd9b69595c99245353af35fff325 100644 (file)
@@ -24,6 +24,7 @@
 #pragma once
 
 #include "inspircd.h"
+#include "event.h"
 #include "modules/dns.h"
 #include "servercommand.h"
 #include "commands.h"
@@ -72,6 +73,10 @@ class ModuleSpanningTree : public Module
         */
        SpanningTreeProtocolInterface protocolinterface;
 
+       /** Event provider for our events
+        */
+       Events::ModuleEventProvider eventprov;
+
  public:
        dynamic_reference<DNS::Manager> DNS;
 
@@ -135,6 +140,8 @@ class ModuleSpanningTree : public Module
         */
        static std::string TimeToStr(time_t secs);
 
+       const Events::ModuleEventProvider& GetEventProvider() const { return eventprov; }
+
        /**
         ** *** MODULE EVENTS ***
         **/
index e004f897ec55bc831d47a992b8a4fdea4cd28871..6ebce07f95cf3a2c38a83f23816acd2f66d7920b 100644 (file)
@@ -151,7 +151,7 @@ void TreeServer::FinishBurst()
        unsigned long bursttime = ts - this->StartBurst;
        ServerInstance->SNO->WriteToSnoMask(Parent == Utils->TreeRoot ? 'l' : 'L', "Received end of netburst from \2%s\2 (burst time: %lu %s)",
                GetName().c_str(), (bursttime > 10000 ? bursttime / 1000 : bursttime), (bursttime > 10000 ? "secs" : "msecs"));
-       AddServerEvent(Utils->Creator, GetName());
+       FOREACH_MOD_CUSTOM(Utils->Creator->GetEventProvider(), SpanningTreeEventListener, OnServerLink, (GetName()));
 
        StartBurst = 0;
        FinishBurstInternal();
@@ -159,7 +159,7 @@ void TreeServer::FinishBurst()
 
 void TreeServer::SQuitChild(TreeServer* server, const std::string& reason)
 {
-       DelServerEvent(Utils->Creator, server->GetName());
+       FOREACH_MOD_CUSTOM(Utils->Creator->GetEventProvider(), SpanningTreeEventListener, OnServerSplit, (server->GetName()));
        stdalgo::erase(Children, server);
 
        if (IsRoot())