From f25c4b7a2263f5f3ce9bb41ba56b43c0d3a6d124 Mon Sep 17 00:00:00 2001 From: danieldg Date: Wed, 2 Sep 2009 00:45:37 +0000 Subject: MetaData rework git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11607 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_spanningtree/main.cpp | 40 +++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 19 deletions(-) (limited to 'src/modules/m_spanningtree/main.cpp') 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) -{ - 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) - { +void ModuleSpanningTree::ProtoSendMetaData(void* opaque, Extensible* target, const std::string &extname, const std::string &extdata) +{ + TreeSocket* s = static_cast(opaque); + User* u = dynamic_cast(target); + Channel* c = dynamic_cast(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(item); + Channel* c = dynamic_cast(item); + if (u) + return u->uuid; + if (c) + return c->name; + return "*"; } void ModuleSpanningTree::OnEvent(Event* event) -- cgit v1.3.1-10-gc9f91