diff options
Diffstat (limited to 'src/socketengines/pipeengine_pipe.cpp')
-rw-r--r-- | src/socketengines/pipeengine_pipe.cpp | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/socketengines/pipeengine_pipe.cpp b/src/socketengines/pipeengine_pipe.cpp deleted file mode 100644 index d56ffef55..000000000 --- a/src/socketengines/pipeengine_pipe.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - * - * (C) 2003-2012 Anope Team - * Contact us at team@anope.org - * - * Please read COPYING and README for further details. - * - * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - */ - -#include "services.h" -#include "sockets.h" -#include "socketengine.h" - -#ifndef _WIN32 -#include <fcntl.h> -#endif - -Pipe::Pipe() : Socket(-1), write_pipe(-1) -{ - int fds[2]; - if (pipe(fds)) - throw CoreException("Could not create pipe: " + Anope::LastError()); - int flags = fcntl(fds[0], F_GETFL, 0); - fcntl(fds[0], F_SETFL, flags | O_NONBLOCK); - flags = fcntl(fds[1], F_GETFL, 0); - fcntl(fds[1], F_SETFL, flags | O_NONBLOCK); - - SocketEngine::Change(this, false, SF_READABLE); - SocketEngine::Change(this, false, SF_WRITABLE); - anope_close(this->sock); - this->io->Destroy(); - SocketEngine::Sockets.erase(this->sock); - - this->sock = fds[0]; - this->write_pipe = fds[1]; - - SocketEngine::Sockets[this->sock] = this; - SocketEngine::Change(this, true, SF_READABLE); -} - -Pipe::~Pipe() -{ - if (this->write_pipe >= 0) - anope_close(this->write_pipe); -} - -bool Pipe::ProcessRead() -{ - char dummy[512]; - while (read(this->GetFD(), dummy, 512) == 512); - this->OnNotify(); - return true; -} - -void Pipe::Notify() -{ - const char dummy = '*'; - write(this->write_pipe, &dummy, 1); -} - |