summaryrefslogtreecommitdiff
path: root/src/socket_transport.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2012-09-01 18:54:51 -0400
committerAdam <Adam@anope.org>2012-09-01 18:54:51 -0400
commite3d5140dcc936ff411c438b7e3997104cb5f085a (patch)
tree49d7ee0b3e531a1c81e35fb10f25e6340fa781ba /src/socket_transport.cpp
parentf81d0113a21187d68c5fa0f1262e5514465b1953 (diff)
Added a web panel module + a default template
Diffstat (limited to 'src/socket_transport.cpp')
-rw-r--r--src/socket_transport.cpp40
1 files changed, 32 insertions, 8 deletions
diff --git a/src/socket_transport.cpp b/src/socket_transport.cpp
index b524c6a24..30af95226 100644
--- a/src/socket_transport.cpp
+++ b/src/socket_transport.cpp
@@ -56,7 +56,7 @@ bool BufferedSocket::ProcessRead()
while (stream.GetToken(tbuf))
{
tbuf.trim();
- if (!tbuf.empty() && !Read(tbuf))
+ if (!Read(tbuf))
return false;
}
@@ -80,6 +80,12 @@ bool BufferedSocket::Read(const Anope::string &buf)
return false;
}
+void BufferedSocket::Write(const char *buffer, size_t l)
+{
+ this->WriteBuffer += buffer + Anope::string("\r\n");
+ SocketEngine::MarkWritable(this);
+}
+
void BufferedSocket::Write(const char *message, ...)
{
va_list vi;
@@ -89,17 +95,15 @@ void BufferedSocket::Write(const char *message, ...)
return;
va_start(vi, message);
- vsnprintf(tbuffer, sizeof(tbuffer), message, vi);
+ int len = vsnprintf(tbuffer, sizeof(tbuffer), message, vi);
va_end(vi);
- Anope::string sbuf = tbuffer;
- Write(sbuf);
+ this->Write(tbuffer, std::min(len, static_cast<int>(sizeof(tbuffer))));
}
void BufferedSocket::Write(const Anope::string &message)
{
- this->WriteBuffer += message + "\r\n";
- SocketEngine::MarkWritable(this);
+ this->Write(message.c_str(), message.length());
}
int BufferedSocket::ReadBufferLen() const
@@ -115,14 +119,14 @@ int BufferedSocket::WriteBufferLen() const
BinarySocket::DataBlock::DataBlock(const char *b, size_t l)
{
- this->buf = new char[l];
+ this->orig = this->buf = new char[l];
memcpy(this->buf, b, l);
this->len = l;
}
BinarySocket::DataBlock::~DataBlock()
{
- delete [] this->buf;
+ delete [] this->orig;
}
BinarySocket::BinarySocket()
@@ -180,6 +184,26 @@ void BinarySocket::Write(const char *buffer, size_t l)
SocketEngine::MarkWritable(this);
}
+void BinarySocket::Write(const char *message, ...)
+{
+ va_list vi;
+ char tbuffer[BUFSIZE];
+
+ if (!message)
+ return;
+
+ va_start(vi, message);
+ int len = vsnprintf(tbuffer, sizeof(tbuffer), message, vi);
+ va_end(vi);
+
+ this->Write(tbuffer, std::min(len, static_cast<int>(sizeof(tbuffer))));
+}
+
+void BinarySocket::Write(const Anope::string &message)
+{
+ this->Write(message.c_str(), message.length());
+}
+
bool BinarySocket::Read(const char *buffer, size_t l)
{
return true;