diff options
author | Adam <Adam@anope.org> | 2010-08-15 01:45:38 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2010-08-15 01:45:38 -0400 |
commit | a950ed8cabfeca55c909f02412b1788bd386dcff (patch) | |
tree | cfa9a16c2385176490ea849f6a4041ee9456c8eb /src/socketengines/socketengine_pipe.cpp | |
parent | 4d0a1aaabd861bb7cd1e378bd1e600af1d34d5d2 (diff) |
Rewrote the MySQL API to use threads. This acts similar to before, but is faster. Removed db_mysql_execute for now.
Diffstat (limited to 'src/socketengines/socketengine_pipe.cpp')
-rw-r--r-- | src/socketengines/socketengine_pipe.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/socketengines/socketengine_pipe.cpp b/src/socketengines/socketengine_pipe.cpp new file mode 100644 index 000000000..ee1069d57 --- /dev/null +++ b/src/socketengines/socketengine_pipe.cpp @@ -0,0 +1,50 @@ +#include "services.h" + +int Pipe::RecvInternal(char *buf, size_t sz) const +{ + static char dummy[512]; + while (read(this->Sock, &dummy, 512) == 512); + return 0; +} + +int Pipe::SendInternal(const Anope::string &) const +{ + static const char dummy = '*'; + return write(this->WritePipe, &dummy, 1); +} + +Pipe::Pipe() : Socket() +{ + int fds[2]; + if (pipe2(fds, O_NONBLOCK)) + throw CoreException(Anope::string("Could not create pipe: ") + strerror(errno)); + + this->Sock = fds[0]; + this->WritePipe = fds[1]; + this->IPv6 = false; + this->Type = SOCKTYPE_CLIENT; + + SocketEngine->AddSocket(this); +} + +bool Pipe::ProcessRead() +{ + this->RecvInternal(NULL, 0); + return this->Read(""); +} + +bool Pipe::Read(const Anope::string &) +{ + this->OnNotify(); + return true; +} + +void Pipe::Notify() +{ + this->SendInternal(""); +} + +void Pipe::OnNotify() +{ +} + |