aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Sadie Powell2022-01-31 05:16:36 +0000
committerGravatar Sadie Powell2022-01-31 12:01:39 +0000
commit4cfc311591fb62c398b273ef2311a855c9fab3d9 (patch)
tree8f8cef41a093692c2dd7086b434ceea510789ab1 /src/modules
parentUse more appropriate types in module-specific extension types. (diff)
Slim down the protocol interface for sending metadata.
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_spanningtree/commands.h4
-rw-r--r--src/modules/m_spanningtree/metadata.cpp48
-rw-r--r--src/modules/m_spanningtree/protocolinterface.cpp14
-rw-r--r--src/modules/m_spanningtree/protocolinterface.h4
4 files changed, 31 insertions, 39 deletions
diff --git a/src/modules/m_spanningtree/commands.h b/src/modules/m_spanningtree/commands.h
index 4c02e8689..38479ca0c 100644
--- a/src/modules/m_spanningtree/commands.h
+++ b/src/modules/m_spanningtree/commands.h
@@ -108,9 +108,7 @@ public:
: public CmdBuilder
{
public:
- Builder(const User* user, const std::string& key, const std::string& val);
- Builder(const Channel* chan, const std::string& key, const std::string& val);
- Builder(const Membership* memb, const std::string& key, const std::string& val);
+ Builder(const Extensible* ext, const std::string& key, const std::string& val);
Builder(const std::string& key, const std::string& val);
};
};
diff --git a/src/modules/m_spanningtree/metadata.cpp b/src/modules/m_spanningtree/metadata.cpp
index 9a21076f9..2119fae3e 100644
--- a/src/modules/m_spanningtree/metadata.cpp
+++ b/src/modules/m_spanningtree/metadata.cpp
@@ -110,31 +110,37 @@ CmdResult CommandMetadata::Handle(User* srcuser, Params& params)
return CmdResult::SUCCESS;
}
-CommandMetadata::Builder::Builder(const User* user, const std::string& key, const std::string& val)
+CommandMetadata::Builder::Builder(const Extensible* ext, const std::string& key, const std::string& val)
: CmdBuilder("METADATA")
{
- push(user->uuid);
- push(key);
- push_last(val);
-}
+ switch (ext->extype)
+ {
+ case ExtensionType::CHANNEL:
+ {
+ const Channel* chan = static_cast<const Channel*>(ext);
+ push(chan->name);
+ push_int(chan->age);
+ break;
+ }
-CommandMetadata::Builder::Builder(const Channel* chan, const std::string& key, const std::string& val)
- : CmdBuilder("METADATA")
-{
- push(chan->name);
- push_int(chan->age);
- push(key);
- push_last(val);
-}
+ case ExtensionType::MEMBERSHIP:
+ {
+ const Membership* memb = static_cast<const Membership*>(ext);
+ push_raw("@");
+ push(memb->user->uuid);
+ push_raw(memb->chan->name);
+ push_int(memb->chan->age);
+ push_int(memb->id);
+ break;
+ }
-CommandMetadata::Builder::Builder(const Membership* memb, const std::string& key, const std::string& val)
- : CmdBuilder("METADATA")
-{
- push_raw("@");
- push(memb->user->uuid);
- push_raw(memb->chan->name);
- push_int(memb->chan->age);
- push_int(memb->id);
+ case ExtensionType::USER:
+ {
+ const User* user = static_cast<const User*>(ext);
+ push(user->uuid);
+ break;
+ }
+ }
push(key);
push_last(val);
}
diff --git a/src/modules/m_spanningtree/protocolinterface.cpp b/src/modules/m_spanningtree/protocolinterface.cpp
index 84cc0c377..6674b67b0 100644
--- a/src/modules/m_spanningtree/protocolinterface.cpp
+++ b/src/modules/m_spanningtree/protocolinterface.cpp
@@ -87,19 +87,9 @@ void SpanningTreeProtocolInterface::BroadcastEncap(const std::string& cmd, const
CmdBuilder(source, "ENCAP * ").push_raw(cmd).insert(params).Forward(server);
}
-void SpanningTreeProtocolInterface::SendMetaData(const User* u, const std::string& key, const std::string& data)
+void SpanningTreeProtocolInterface::SendMetaData(const Extensible* ext, const std::string& key, const std::string& data)
{
- CommandMetadata::Builder(u, key, data).Broadcast();
-}
-
-void SpanningTreeProtocolInterface::SendMetaData(const Channel* c, const std::string& key, const std::string& data)
-{
- CommandMetadata::Builder(c, key, data).Broadcast();
-}
-
-void SpanningTreeProtocolInterface::SendMetaData(const Membership* m, const std::string& key, const std::string& data)
-{
- CommandMetadata::Builder(m, key, data).Broadcast();
+ CommandMetadata::Builder(ext, key, data).Broadcast();
}
void SpanningTreeProtocolInterface::SendMetaData(const std::string& key, const std::string& data)
diff --git a/src/modules/m_spanningtree/protocolinterface.h b/src/modules/m_spanningtree/protocolinterface.h
index 7843c12f3..7322738eb 100644
--- a/src/modules/m_spanningtree/protocolinterface.h
+++ b/src/modules/m_spanningtree/protocolinterface.h
@@ -39,9 +39,7 @@ public:
bool SendEncapsulatedData(const std::string& targetmask, const std::string& cmd, const CommandBase::Params& params, User* source) override;
void BroadcastEncap(const std::string& cmd, const CommandBase::Params& params, User* source, User* omit) override;
- void SendMetaData(const User* user, const std::string& key, const std::string& data) override;
- void SendMetaData(const Channel* chan, const std::string& key, const std::string& data) override;
- void SendMetaData(const Membership* memb, const std::string& key, const std::string& data) override;
+ void SendMetaData(const Extensible* ext, const std::string& key, const std::string& data) override;
void SendMetaData(const std::string& key, const std::string& data) override;
void SendSNONotice(char snomask, const std::string& text) override;
void SendMessage(Channel* target, char status, const std::string& text, MessageType msgtype) override;