summaryrefslogtreecommitdiff
path: root/src/modules/m_cap.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/m_cap.h')
-rw-r--r--src/modules/m_cap.h27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/modules/m_cap.h b/src/modules/m_cap.h
index 604fdb0ef..9ce7f9501 100644
--- a/src/modules/m_cap.h
+++ b/src/modules/m_cap.h
@@ -21,18 +21,22 @@
#ifndef M_CAP_H
#define M_CAP_H
-#include <map>
-#include <string>
-
class CapEvent : public Event
{
public:
- irc::string type;
+ enum CapEventType
+ {
+ CAPEVENT_REQ,
+ CAPEVENT_LS,
+ CAPEVENT_LIST,
+ CAPEVENT_CLEAR
+ };
+
+ CapEventType type;
std::vector<std::string> wanted;
std::vector<std::string> ack;
User* user;
- Module* creator;
- CapEvent(Module* sender, const std::string& t) : Event(sender, t) {}
+ CapEvent(Module* sender, User* u, CapEventType capevtype) : Event(sender, "cap_request"), type(capevtype), user(u) {}
};
class GenericCap
@@ -47,8 +51,11 @@ class GenericCap
void HandleEvent(Event& ev)
{
+ if (ev.id != "cap_request")
+ return;
+
CapEvent *data = static_cast<CapEvent*>(&ev);
- if (ev.id == "cap_req")
+ if (data->type == CapEvent::CAPEVENT_REQ)
{
std::vector<std::string>::iterator it;
if ((it = std::find(data->wanted.begin(), data->wanted.end(), cap)) != data->wanted.end())
@@ -59,16 +66,16 @@ class GenericCap
ext.set(data->user, 1);
}
}
- else if (ev.id == "cap_ls")
+ else if (data->type == CapEvent::CAPEVENT_LS)
{
data->wanted.push_back(cap);
}
- else if (ev.id == "cap_list")
+ else if (data->type == CapEvent::CAPEVENT_LIST)
{
if (ext.get(data->user))
data->wanted.push_back(cap);
}
- else if (ev.id == "cap_clear")
+ else if (data->type == CapEvent::CAPEVENT_CLEAR)
{
data->ack.push_back("-" + cap);
ext.set(data->user, 0);