]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Convert the CAP event to use the new cross-module event system
authorAttila Molnar <attilamolnar@hush.com>
Wed, 11 Feb 2015 16:01:00 +0000 (17:01 +0100)
committerAttila Molnar <attilamolnar@hush.com>
Wed, 11 Feb 2015 16:01:00 +0000 (17:01 +0100)
include/modules/cap.h
src/modules/m_cap.cpp
src/modules/m_ircv3.cpp
src/modules/m_namesx.cpp
src/modules/m_sasl.cpp
src/modules/m_starttls.cpp
src/modules/m_uhnames.cpp

index fae7fff15047249428d0cafbbf597ff80c325552..7aa60cd218517077f0ca38dd6fca21df371e8c34 100644 (file)
@@ -20,7 +20,9 @@
 
 #pragma once
 
-class CapEvent : public Event
+#include "event.h"
+
+class CapEvent
 {
  public:
        enum CapEventType
@@ -35,10 +37,10 @@ class CapEvent : public Event
        std::vector<std::string> wanted;
        std::vector<std::string> ack;
        User* user;
-       CapEvent(Module* sender, User* u, CapEventType capevtype) : Event(sender, "cap_request"), type(capevtype), user(u) {}
+       CapEvent(Module* sender, User* u, CapEventType capevtype) : type(capevtype), user(u) {}
 };
 
-class GenericCap
+class GenericCap : public Events::ModuleEventListener
 {
        bool active;
 
@@ -46,17 +48,15 @@ class GenericCap
        LocalIntExt ext;
        const std::string cap;
        GenericCap(Module* parent, const std::string& Cap)
-               : active(true)
+               : Events::ModuleEventListener(parent, "event/cap")
+               , active(true)
                , ext("cap_" + Cap, ExtensionItem::EXT_USER, parent)
                , cap(Cap)
        {
        }
 
-       void HandleEvent(Event& ev)
+       void OnCapEvent(CapEvent& ev) CXX11_OVERRIDE
        {
-               if (ev.id != "cap_request")
-                       return;
-
                if (!active)
                        return;
 
index db5d85f0f09dc92f001d9cfb962176a6965470a1..2c2178a187bce3c15bdd6ecc6ac3762635de2203 100644 (file)
@@ -39,9 +39,12 @@ CAP END
  */
 class CommandCAP : public Command
 {
+       Events::ModuleEventProvider capevprov;
+
  public:
        LocalIntExt reghold;
        CommandCAP (Module* mod) : Command(mod, "CAP", 1),
+               capevprov(mod, "event/cap"),
                reghold("CAP_REGHOLD", ExtensionItem::EXT_USER, mod)
        {
                works_before_reg = true;
@@ -70,7 +73,7 @@ class CommandCAP : public Command
                        }
 
                        reghold.set(user, 1);
-                       Data.Send();
+                       FOREACH_MOD_CUSTOM(capevprov, GenericCap, OnCapEvent, (Data));
 
                        if (Data.ack.size() > 0)
                        {
@@ -93,7 +96,7 @@ class CommandCAP : public Command
                        CapEvent Data(creator, user, subcommand == "LS" ? CapEvent::CAPEVENT_LS : CapEvent::CAPEVENT_LIST);
 
                        reghold.set(user, 1);
-                       Data.Send();
+                       FOREACH_MOD_CUSTOM(capevprov, GenericCap, OnCapEvent, (Data));
 
                        std::string Result = irc::stringjoiner(Data.wanted);
                        user->WriteCommand("CAP", subcommand + " :" + Result);
@@ -103,7 +106,7 @@ class CommandCAP : public Command
                        CapEvent Data(creator, user, CapEvent::CAPEVENT_CLEAR);
 
                        reghold.set(user, 1);
-                       Data.Send();
+                       FOREACH_MOD_CUSTOM(capevprov, GenericCap, OnCapEvent, (Data));
 
                        std::string Result = irc::stringjoiner(Data.ack);
                        user->WriteCommand("CAP", "ACK :" + Result);
index 861ccec143faaa371db2b4e381331016764c32d6..caee0d32944e4405c1f4269b7ee16b3dfaf63738 100644 (file)
@@ -65,13 +65,6 @@ class ModuleIRCv3 : public Module, public AccountEventListener
                cap_extendedjoin.SetActive(conf->getBool("extendedjoin", true));
        }
 
-       void OnEvent(Event& ev) CXX11_OVERRIDE
-       {
-               cap_awaynotify.HandleEvent(ev);
-               cap_extendedjoin.HandleEvent(ev);
-               cap_accountnotify.HandleEvent(ev);
-       }
-
        void OnAccountChange(User* user, const std::string& newaccount) CXX11_OVERRIDE
        {
                // :nick!user@host ACCOUNT account
index f211b01d88a75af838c527b283ef68c81517750d..c701f16bf1b20cf450e9c75583fa2d9e70ae3575 100644 (file)
@@ -94,11 +94,6 @@ class ModuleNamesX : public Module
                line.erase(pos, 1);
                line.insert(pos, prefixes);
        }
-
-       void OnEvent(Event& ev) CXX11_OVERRIDE
-       {
-               cap.HandleEvent(ev);
-       }
 };
 
 MODULE_INIT(ModuleNamesX)
index 0a2c840bd0205eb0905ff9484ff08c3eb772815a..ade998b4e5acc10cf6cb429783050073c2b355cf 100644 (file)
@@ -283,11 +283,6 @@ class ModuleSASL : public Module
        {
                return Version("Provides support for IRC Authentication Layer (aka: atheme SASL) via AUTHENTICATE.",VF_VENDOR);
        }
-
-       void OnEvent(Event &ev) CXX11_OVERRIDE
-       {
-               cap.HandleEvent(ev);
-       }
 };
 
 MODULE_INIT(ModuleSASL)
index d591eed5528264bb5966eaa46358dbc5b76b053d..b05302fa96c93f83197e4e547e6e67d79c04004a 100644 (file)
@@ -102,11 +102,6 @@ class ModuleStartTLS : public Module
                        ssl.SetProvider("ssl/" + newprovider);
        }
 
-       void OnEvent(Event& ev) CXX11_OVERRIDE
-       {
-               tls.HandleEvent(ev);
-       }
-
        void On005Numeric(std::map<std::string, std::string>& tokens) CXX11_OVERRIDE
        {
                tokens["STARTTLS"];
index 0a171c4dc7731a9a71e16217dbcd6b526fb90ac3..90bac54f58a243635ae15a76ca525e7654a48796 100644 (file)
@@ -66,11 +66,6 @@ class ModuleUHNames : public Module
 
                return MOD_RES_PASSTHRU;
        }
-
-       void OnEvent(Event& ev) CXX11_OVERRIDE
-       {
-               cap.HandleEvent(ev);
-       }
 };
 
 MODULE_INIT(ModuleUHNames)