]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_cap.h
Remove an unused event.
[user/henk/code/inspircd.git] / src / modules / m_cap.h
index 9f17bd3d05ffedcf187526e8785cfd3c17d90ada..7e27ef4cf721068118008c3f1058c3372490378c 100644 (file)
@@ -2,11 +2,11 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2008 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
  * See: http://www.inspircd.org/wiki/index.php/Credits
  *
  * This program is free but copyrighted software; see
- *            the file COPYING for details.
+ *         the file COPYING for details.
  *
  * ---------------------------------------------------
  */
@@ -17,7 +17,7 @@
 #include <map>
 #include <string>
 
-class CapData
+class CapData : public classbase
 {
  public:
        irc::string type;
@@ -27,4 +27,42 @@ class CapData
        Module* creator;
 };
 
+void GenericCapHandler(Event* ev, const std::string &extname, const std::string &cap)
+{
+       if (ev->GetEventID() == "cap_req")
+       {
+               CapData *data = (CapData *) ev->GetData();
+
+               std::vector<std::string>::iterator it;
+               if ((it = std::find(data->wanted.begin(), data->wanted.end(), cap)) != data->wanted.end())
+               {
+                       // we can handle this, so ACK it, and remove it from the wanted list
+                       data->ack.push_back(*it);
+                       data->wanted.erase(it);
+                       data->user->Extend(extname);
+               }
+       }
+
+       if (ev->GetEventID() == "cap_ls")
+       {
+               CapData *data = (CapData *) ev->GetData();
+               data->wanted.push_back(cap);
+       }
+
+       if (ev->GetEventID() == "cap_list")
+       {
+               CapData *data = (CapData *) ev->GetData();
+
+               if (data->user->GetExt(extname))
+                       data->wanted.push_back(cap);
+       }
+
+       if (ev->GetEventID() == "cap_clear")
+       {
+               CapData *data = (CapData *) ev->GetData();
+               data->ack.push_back("-" + cap);
+               data->user->Shrink(extname);
+       }
+}
+
 #endif