summaryrefslogtreecommitdiff
path: root/node/IpcConnection.hpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2014-03-19 08:20:09 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2014-03-19 08:20:09 -0700
commitacf7d70d241c6afc1f3f13fb7b678882f1ec3ea5 (patch)
tree6fe15b9d0305f00787db610424c9aa26322f03ba /node/IpcConnection.hpp
parent3be4c38946ddd38134f2093bc55950d45b1d1a6c (diff)
downloadinfinitytier-acf7d70d241c6afc1f3f13fb7b678882f1ec3ea5.tar.gz
infinitytier-acf7d70d241c6afc1f3f13fb7b678882f1ec3ea5.zip
Integrate IPC stuff into NodeConfig.
Diffstat (limited to 'node/IpcConnection.hpp')
-rw-r--r--node/IpcConnection.hpp24
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