From acf7d70d241c6afc1f3f13fb7b678882f1ec3ea5 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Wed, 19 Mar 2014 08:20:09 -0700 Subject: Integrate IPC stuff into NodeConfig. --- node/IpcConnection.hpp | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'node/IpcConnection.hpp') 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; 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 &,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 &,const char *),void *arg); + IpcConnection(int s,void (*commandHandler)(void *,IpcConnection *,IpcConnection::EventType,const char *),void *arg); - void (*_handler)(void *,const SharedPtr &,const char *); + void (*_handler)(void *,IpcConnection *,IpcConnection::EventType,const char *); void *_arg; volatile int _sock; - Thread _thread; Mutex _writeLock; - - AtomicCounter __refCount; }; } // namespace ZeroTier -- cgit v1.2.3