diff options
| author | 2009-09-02 00:45:37 +0000 | |
|---|---|---|
| committer | 2009-09-02 00:45:37 +0000 | |
| commit | f25c4b7a2263f5f3ce9bb41ba56b43c0d3a6d124 (patch) | |
| tree | 43fba09e698269cd4c22c68be7ecb4a5875f55f3 /src/modules/m_spanningtree/main.cpp | |
| parent | Remove a few unneeded string copies in the PRIVMSG path (diff) | |
MetaData rework
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11607 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_spanningtree/main.cpp')
| -rw-r--r-- | src/modules/m_spanningtree/main.cpp | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index c402b145a..2ecbd8a88 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -899,26 +899,28 @@ void ModuleSpanningTree::ProtoSendMode(void* opaque, TargetTypeFlags target_type } } -void ModuleSpanningTree::ProtoSendMetaData(void* opaque, TargetTypeFlags target_type, void* target, const std::string &extname, const std::string &extdata) +void ModuleSpanningTree::ProtoSendMetaData(void* opaque, Extensible* target, const std::string &extname, const std::string &extdata) { - TreeSocket* s = (TreeSocket*)opaque; - if (target) - { - if (target_type == TYPE_USER) - { - User* u = (User*)target; - s->WriteLine(std::string(":")+ServerInstance->Config->GetSID()+" METADATA "+u->uuid+" "+extname+" :"+extdata); - } - else if (target_type == TYPE_CHANNEL) - { - Channel* c = (Channel*)target; - s->WriteLine(std::string(":")+ServerInstance->Config->GetSID()+" METADATA "+c->name+" "+extname+" :"+extdata); - } - } - if (target_type == TYPE_OTHER) - { + TreeSocket* s = static_cast<TreeSocket*>(opaque); + User* u = dynamic_cast<User*>(target); + Channel* c = dynamic_cast<Channel*>(target); + if (u) + s->WriteLine(std::string(":")+ServerInstance->Config->GetSID()+" METADATA "+u->uuid+" "+extname+" :"+extdata); + else if (c) + s->WriteLine(std::string(":")+ServerInstance->Config->GetSID()+" METADATA "+c->name+" "+extname+" :"+extdata); + else if (!target) s->WriteLine(std::string(":")+ServerInstance->Config->GetSID()+" METADATA * "+extname+" :"+extdata); - } +} + +std::string ModuleSpanningTree::ProtoTranslate(Extensible* item) +{ + User* u = dynamic_cast<User*>(item); + Channel* c = dynamic_cast<Channel*>(item); + if (u) + return u->uuid; + if (c) + return c->name; + return "*"; } void ModuleSpanningTree::OnEvent(Event* event) |
