From 001861f5d2aca21531b0a20a46e44654a45a5522 Mon Sep 17 00:00:00 2001 From: brain Date: Fri, 4 Apr 2008 14:37:23 +0000 Subject: Add protocol api functions: PI->WriteChannelPrivmsg() and PI->WriteChannelNotice() - sends with SID origin over network git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9308 e03df62e-2008-0410-955e-edbf42e46eb7 --- include/protocol.h | 4 ++++ src/modules/m_spanningtree/protocolinterface.cpp | 29 ++++++++++++++++++++++++ src/modules/m_spanningtree/protocolinterface.h | 3 +++ 3 files changed, 36 insertions(+) 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 -- cgit v1.2.3