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/m_spanningtree/metadata.cpp | |
| parent | Use more appropriate types in module-specific extension types. (diff) | |
Slim down the protocol interface for sending metadata.
Diffstat (limited to 'src/modules/m_spanningtree/metadata.cpp')
| -rw-r--r-- | src/modules/m_spanningtree/metadata.cpp | 48 |
1 files changed, 27 insertions, 21 deletions
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); } |
