summaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree
diff options
context:
space:
mode:
authorPeter Powell <petpow@saberuk.com>2017-12-11 19:42:52 +0000
committerPeter Powell <petpow@saberuk.com>2018-01-06 14:18:21 +0000
commit2fcb5ff4389a9a82d253acdff02a388ddcf14653 (patch)
tree96feee81599adb7ef02bc35293daccba7071a6de /src/modules/m_spanningtree
parent40514d0ba8279309f350a47652fffef745662926 (diff)
Rework message handling.
- Move all message-related types to their own header to make moving them to a cross-module events easier. - Rename OnUserMessage to OnUserPostMessage. - Rename OnText to OnUserMessage. - Replace the dest, target_type, and status parameters with the MessageTarget class. - Replace the text, exempt_list, and msgtype parameters with the MessageDetails struct. - Add echooriginal and originaltext to the MessageDetails struct to allow spam filtering to not be broken by cap echo-message.
Diffstat (limited to 'src/modules/m_spanningtree')
-rw-r--r--src/modules/m_spanningtree/main.cpp22
-rw-r--r--src/modules/m_spanningtree/main.h2
2 files changed, 12 insertions, 12 deletions
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp
index c244629c1..1a77237bd 100644
--- a/src/modules/m_spanningtree/main.cpp
+++ b/src/modules/m_spanningtree/main.cpp
@@ -386,33 +386,33 @@ void ModuleSpanningTree::OnPostTopicChange(User* user, Channel* chan, const std:
CommandFTopic::Builder(user, chan).Broadcast();
}
-void ModuleSpanningTree::OnUserMessage(User* user, void* dest, int target_type, const std::string& text, char status, const CUList& exempt_list, MessageType msgtype)
+void ModuleSpanningTree::OnUserPostMessage(User* user, const MessageTarget& target, const MessageDetails& details)
{
if (!IS_LOCAL(user))
return;
- const char* message_type = (msgtype == MSG_PRIVMSG ? "PRIVMSG" : "NOTICE");
- if (target_type == TYPE_USER)
+ const char* message_type = (details.type == MSG_PRIVMSG ? "PRIVMSG" : "NOTICE");
+ if (target.type == MessageTarget::TYPE_USER)
{
- User* d = (User*) dest;
+ User* d = target.Get<User>();
if (!IS_LOCAL(d))
{
CmdBuilder params(user, message_type);
params.push_back(d->uuid);
- params.push_last(text);
+ params.push_last(details.text);
params.Unicast(d);
}
}
- else if (target_type == TYPE_CHANNEL)
+ else if (target.type == MessageTarget::TYPE_CHANNEL)
{
- Utils->SendChannelMessage(user->uuid, (Channel*)dest, text, status, exempt_list, message_type);
+ Utils->SendChannelMessage(user->uuid, target.Get<Channel>(), details.text, target.status, details.exemptions, message_type);
}
- else if (target_type == TYPE_SERVER)
+ else if (target.type == MessageTarget::TYPE_SERVER)
{
- char* target = (char*) dest;
+ const std::string* serverglob = target.Get<std::string>();
CmdBuilder par(user, message_type);
- par.push_back(target);
- par.push_last(text);
+ par.push_back(*serverglob);
+ par.push_last(details.text);
par.Broadcast();
}
}
diff --git a/src/modules/m_spanningtree/main.h b/src/modules/m_spanningtree/main.h
index 13bab4cff..4eefb01a0 100644
--- a/src/modules/m_spanningtree/main.h
+++ b/src/modules/m_spanningtree/main.h
@@ -147,7 +147,7 @@ class ModuleSpanningTree : public Module
void OnUserInvite(User* source, User* dest, Channel* channel, time_t timeout, unsigned int notifyrank, CUList& notifyexcepts) CXX11_OVERRIDE;
ModResult OnPreTopicChange(User* user, Channel* chan, const std::string& topic) CXX11_OVERRIDE;
void OnPostTopicChange(User* user, Channel* chan, const std::string &topic) CXX11_OVERRIDE;
- void OnUserMessage(User* user, void* dest, int target_type, const std::string& text, char status, const CUList& exempt_list, MessageType msgtype) CXX11_OVERRIDE;
+ void OnUserPostMessage(User* user, const MessageTarget& target, const MessageDetails& details) CXX11_OVERRIDE;
void OnBackgroundTimer(time_t curtime) CXX11_OVERRIDE;
void OnUserJoin(Membership* memb, bool sync, bool created, CUList& excepts) CXX11_OVERRIDE;
void OnChangeHost(User* user, const std::string &newhost) CXX11_OVERRIDE;