3es  0.7
3esconnectionmonitor.h
1 //
2 // author: Kazys Stepanas
3 //
4 #ifndef _3ESCONNECTIONMONITOR_H_
5 #define _3ESCONNECTIONMONITOR_H_
6 
7 #include "3es-core.h"
8 
9 #include <functional>
10 
11 namespace tes
12 {
13  class Connection;
14  class Server;
15 
70  class _3es_coreAPI ConnectionMonitor
71  {
72  protected:
74  virtual ~ConnectionMonitor() {}
75 
76  public:
77  enum Mode
78  {
79  None,
80  Synchronous,
81  Asynchronous
82  };
83 
92  virtual bool start(Mode mode) = 0;
93 
98  virtual void stop() = 0;
101  virtual void join() = 0;
102 
105  virtual bool isRunning() const = 0;
106 
116  virtual Mode mode() const = 0;
117 
122  virtual int waitForConnection(unsigned timeoutMs) = 0;
123 
129  virtual void monitorConnections() = 0;
130 
143  virtual void setConnectionCallback(void(*callback)(Server &, Connection &, void *), void *user) = 0;
144 
152  virtual void setConnectionCallback(const std::function<void(Server &, Connection &)> &callback) = 0;
153 
162  virtual void commitConnections() = 0;
163  };
164 }
165 
166 #endif // _3ESCONNECTIONMONITOR_H_
Defines the interfaces for a client connection.
Definition: 3esconnection.h:19
Defines the interface for managing a 3es server.
Definition: 3esserver.h:53
Definition: 3esbounds.h:13
virtual ~ConnectionMonitor()
Protected virtual destructor.
Definition: 3esconnectionmonitor.h:74
A utility class for monitoring new connections for a Server.
Definition: 3esconnectionmonitor.h:70