]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_spanningtree/metadata.cpp
Replace std::deque with std::vector in spanningtree and related modules
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / metadata.cpp
1 /*       +------------------------------------+
2  *       | Inspire Internet Relay Chat Daemon |
3  *       +------------------------------------+
4  *
5  *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
6  * See: http://wiki.inspircd.org/Credits
7  *
8  * This program is free but copyrighted software; see
9  *            the file COPYING for details.
10  *
11  * ---------------------------------------------------
12  */
13
14 #include "inspircd.h"
15 #include "xline.h"
16
17 #include "treesocket.h"
18 #include "treeserver.h"
19 #include "utils.h"
20
21 /* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
22
23
24 bool TreeSocket::MetaData(const std::string &prefix, parameterlist &params)
25 {
26         if (params.size() < 2)
27                 return true;
28         else if (params.size() < 3)
29                 params.push_back("");
30         TreeServer* ServerSource = Utils->FindServer(prefix);
31         if (ServerSource)
32         {
33                 if (params[0] == "*")
34                 {
35                         FOREACH_MOD_I(this->ServerInstance,I_OnDecodeMetaData,OnDecodeMetaData(TYPE_OTHER,NULL,params[1],params[2]));
36                 }
37                 else if (*(params[0].c_str()) == '#')
38                 {
39                         Channel* c = this->ServerInstance->FindChan(params[0]);
40                         if (c)
41                         {
42                                 FOREACH_MOD_I(this->ServerInstance,I_OnDecodeMetaData,OnDecodeMetaData(TYPE_CHANNEL,c,params[1],params[2]));
43                         }
44                 }
45                 else if (*(params[0].c_str()) != '#')
46                 {
47                         User* u = this->ServerInstance->FindNick(params[0]);
48                         if (u)
49                         {
50                                 FOREACH_MOD_I(this->ServerInstance,I_OnDecodeMetaData,OnDecodeMetaData(TYPE_USER,u,params[1],params[2]));
51                         }
52                 }
53         }
54
55         params[2] = ":" + params[2];
56         Utils->DoOneToAllButSender(prefix,"METADATA",params,prefix);
57         return true;
58 }
59