diff options
-rw-r--r-- | include/protocol.h | 4 | ||||
-rw-r--r-- | src/modules/m_spanningtree/protocolinterface.cpp | 29 | ||||
-rw-r--r-- | src/modules/m_spanningtree/protocolinterface.h | 3 |
3 files changed, 36 insertions, 0 deletions
diff --git a/include/protocol.h b/include/protocol.h index 44964e1e8..6f9cf8022 100644 --- a/include/protocol.h +++ b/include/protocol.h @@ -54,6 +54,10 @@ class ProtocolInterface : public Extensible virtual void SendSNONotice(const std::string &snomask, const std::string &text) { } virtual void PushToClient(User* target, const std::string &rawline) { } + + virtual void SendChannelPrivmsg(Channel* target, char status, const std::string &text) { } + + virtual void SendChannelNotice(Channel* target, char status, const std::string &text) { } }; #endif diff --git a/src/modules/m_spanningtree/protocolinterface.cpp b/src/modules/m_spanningtree/protocolinterface.cpp index 48d0f78eb..d10f7f981 100644 --- a/src/modules/m_spanningtree/protocolinterface.cpp +++ b/src/modules/m_spanningtree/protocolinterface.cpp @@ -1,6 +1,8 @@ #include "inspircd.h" #include "m_spanningtree/main.h" #include "m_spanningtree/utils.h" +#include "m_spanningtree/treeserver.h" +#include "m_spanningtree/treesocket.h" #include "m_spanningtree/protocolinterface.h" void SpanningTreeProtocolInterface::SendEncapsulatedData(parameterlist &encap) @@ -103,3 +105,30 @@ void SpanningTreeProtocolInterface::PushToClient(User* target, const std::string Utils->DoOneToOne(ServerInstance->Config->GetSID(), "PUSH", p, target->server); } +void SpanningTreeProtocolInterface::SendChannel(Channel* target, char status, const std::string &text) +{ + std::string cname = target->name; + if (status) + cname = status + cname; + TreeServerList list; + CUList exempt_list; + Utils->GetListOfServersForChannel(target,list,status,exempt_list); + for (TreeServerList::iterator i = list.begin(); i != list.end(); i++) + { + TreeSocket* Sock = i->second->GetSocket(); + if (Sock) + Sock->WriteLine(text); + } +} + + +void SpanningTreeProtocolInterface::SendChannelPrivmsg(Channel* target, char status, const std::string &text) +{ + SendChannel(target, status, ServerInstance->Config->GetSID()+" PRIVMSG "+target->name+" :"+text); +} + +void SpanningTreeProtocolInterface::SendChannelNotice(Channel* target, char status, const std::string &text) +{ + SendChannel(target, status, ServerInstance->Config->GetSID()+" NOTICE "+target->name+" :"+text); +} + diff --git a/src/modules/m_spanningtree/protocolinterface.h b/src/modules/m_spanningtree/protocolinterface.h index 754e1bf6f..29d669da9 100644 --- a/src/modules/m_spanningtree/protocolinterface.h +++ b/src/modules/m_spanningtree/protocolinterface.h @@ -9,6 +9,7 @@ class SpanningTreeProtocolInterface : public ProtocolInterface { SpanningTreeUtilities* Utils; ModuleSpanningTree* Module; + void SendChannel(Channel* target, char status, const std::string &text); public: SpanningTreeProtocolInterface(ModuleSpanningTree* mod, SpanningTreeUtilities* util, InspIRCd* Instance) : ProtocolInterface(Instance), Utils(util), Module(mod) { } virtual ~SpanningTreeProtocolInterface() { } @@ -21,6 +22,8 @@ class SpanningTreeProtocolInterface : public ProtocolInterface virtual void SendModeNotice(const std::string &modes, const std::string &text); virtual void SendSNONotice(const std::string &snomask, const std::string &text); virtual void PushToClient(User* target, const std::string &rawline); + virtual void SendChannelPrivmsg(Channel* target, char status, const std::string &text); + virtual void SendChannelNotice(Channel* target, char status, const std::string &text); }; #endif |