summaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/m_spanningtree/utils.cpp')
-rw-r--r--src/modules/m_spanningtree/utils.cpp33
1 files changed, 10 insertions, 23 deletions
diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp
index f71a9f0d5..40db1339c 100644
--- a/src/modules/m_spanningtree/utils.cpp
+++ b/src/modules/m_spanningtree/utils.cpp
@@ -27,6 +27,7 @@
#include "treeserver.h"
#include "treesocket.h"
#include "resolvers.h"
+#include "commandbuilder.h"
SpanningTreeUtilities* Utils = NULL;
@@ -189,22 +190,9 @@ void SpanningTreeUtilities::GetListOfServersForChannel(Channel* c, TreeSocketSet
return;
}
-std::string SpanningTreeUtilities::ConstructLine(const std::string& prefix, const std::string& command, const parameterlist& params)
+void SpanningTreeUtilities::DoOneToAllButSender(const CmdBuilder& params, TreeServer* omitroute)
{
- std::string FullLine;
- FullLine.reserve(1024);
- FullLine = ":" + prefix + " " + command;
- for (parameterlist::const_iterator x = params.begin(); x != params.end(); ++x)
- {
- FullLine.push_back(' ');
- FullLine.append(*x);
- }
- return FullLine;
-}
-
-void SpanningTreeUtilities::DoOneToAllButSender(const std::string& prefix, const std::string& command, const parameterlist& params, TreeServer* omitroute)
-{
- std::string FullLine = ConstructLine(prefix, command, params);
+ const std::string& FullLine = params.str();
const TreeServer::ChildServers& children = TreeRoot->GetChildren();
for (TreeServer::ChildServers::const_iterator i = children.begin(); i != children.end(); ++i)
@@ -218,13 +206,13 @@ void SpanningTreeUtilities::DoOneToAllButSender(const std::string& prefix, const
}
}
-bool SpanningTreeUtilities::DoOneToOne(const std::string& prefix, const std::string& command, const parameterlist& params, const std::string& target)
+bool SpanningTreeUtilities::DoOneToOne(const CmdBuilder& params, const std::string& target)
{
TreeServer* Route = this->BestRouteTo(target);
if (!Route)
return false;
- Route->GetSocket()->WriteLine(ConstructLine(prefix, command, params));
+ Route->GetSocket()->WriteLine(params);
return true;
}
@@ -378,11 +366,10 @@ Link* SpanningTreeUtilities::FindLink(const std::string& name)
void SpanningTreeUtilities::SendChannelMessage(const std::string& prefix, Channel* target, const std::string& text, char status, const CUList& exempt_list, const char* message_type, TreeSocket* omit)
{
- std::string raw(":");
- raw.append(prefix).append(1, ' ').append(message_type).push_back(' ');
- if (status)
- raw.push_back(status);
- raw.append(target->name).append(" :").append(text);
+ CmdBuilder msg(prefix, message_type);
+ if (status == 0)
+ status = ' ';
+ msg.push(status).push_raw(target->name).push_last(text);
TreeSocketSet list;
this->GetListOfServersForChannel(target, list, status, exempt_list);
@@ -390,6 +377,6 @@ void SpanningTreeUtilities::SendChannelMessage(const std::string& prefix, Channe
{
TreeSocket* Sock = *i;
if (Sock != omit)
- Sock->WriteLine(raw);
+ Sock->WriteLine(msg);
}
}