diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-03-19 08:20:09 -0700 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-03-19 08:20:09 -0700 |
| commit | acf7d70d241c6afc1f3f13fb7b678882f1ec3ea5 (patch) | |
| tree | 6fe15b9d0305f00787db610424c9aa26322f03ba /node/IpcConnection.hpp | |
| parent | 3be4c38946ddd38134f2093bc55950d45b1d1a6c (diff) | |
| download | infinitytier-acf7d70d241c6afc1f3f13fb7b678882f1ec3ea5.tar.gz infinitytier-acf7d70d241c6afc1f3f13fb7b678882f1ec3ea5.zip | |
Integrate IPC stuff into NodeConfig.
Diffstat (limited to 'node/IpcConnection.hpp')
| -rw-r--r-- | node/IpcConnection.hpp | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/node/IpcConnection.hpp b/node/IpcConnection.hpp index 60d34634..d1294d36 100644 --- a/node/IpcConnection.hpp +++ b/node/IpcConnection.hpp @@ -32,8 +32,6 @@ #include "Thread.hpp" #include "NonCopyable.hpp" #include "Mutex.hpp" -#include "SharedPtr.hpp" -#include "AtomicCounter.hpp" namespace ZeroTier { @@ -45,9 +43,15 @@ class IpcListener; class IpcConnection : NonCopyable { friend class IpcListener; - friend class SharedPtr<IpcConnection>; public: + enum EventType + { + IPC_EVENT_COMMAND, + IPC_EVENT_NEW_CONNECTION, + IPC_EVENT_CONNECTION_CLOSED + }; + /** * Connect to an IPC endpoint * @@ -56,7 +60,7 @@ public: * @param arg First argument to command handler * @throws std::runtime_error Unable to connect */ - IpcConnection(const char *endpoint,void (*commandHandler)(void *,const SharedPtr<IpcConnection> &,const char *),void *arg); + IpcConnection(const char *endpoint,void (*commandHandler)(void *,IpcConnection *,IpcConnection::EventType,const char *),void *arg); ~IpcConnection(); /** @@ -65,25 +69,17 @@ public: */ void printf(const char *format,...); - /** - * Close this connection - */ - void close(); - void threadMain() throw(); private: // Used by IpcListener to construct incoming connections - IpcConnection(int s,void (*commandHandler)(void *,const SharedPtr<IpcConnection> &,const char *),void *arg); + IpcConnection(int s,void (*commandHandler)(void *,IpcConnection *,IpcConnection::EventType,const char *),void *arg); - void (*_handler)(void *,const SharedPtr<IpcConnection> &,const char *); + void (*_handler)(void *,IpcConnection *,IpcConnection::EventType,const char *); void *_arg; volatile int _sock; - Thread _thread; Mutex _writeLock; - - AtomicCounter __refCount; }; } // namespace ZeroTier |
