diff options
author | Adam <Adam@anope.org> | 2012-09-01 18:54:51 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2012-09-01 18:54:51 -0400 |
commit | e3d5140dcc936ff411c438b7e3997104cb5f085a (patch) | |
tree | 49d7ee0b3e531a1c81e35fb10f25e6340fa781ba /src/socket_transport.cpp | |
parent | f81d0113a21187d68c5fa0f1262e5514465b1953 (diff) |
Added a web panel module + a default template
Diffstat (limited to 'src/socket_transport.cpp')
-rw-r--r-- | src/socket_transport.cpp | 40 |
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; |