diff options
| author | 2022-01-31 05:16:36 +0000 | |
|---|---|---|
| committer | 2022-01-31 12:01:39 +0000 | |
| commit | 4cfc311591fb62c398b273ef2311a855c9fab3d9 (patch) | |
| tree | 8f8cef41a093692c2dd7086b434ceea510789ab1 /src/modules | |
| parent | Use 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.h | 4 | ||||
| -rw-r--r-- | src/modules/m_spanningtree/metadata.cpp | 48 | ||||
| -rw-r--r-- | src/modules/m_spanningtree/protocolinterface.cpp | 14 | ||||
| -rw-r--r-- | src/modules/m_spanningtree/protocolinterface.h | 4 |
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; |
