summaryrefslogtreecommitdiffstats
path: root/src/Net/Listener.h
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2009-05-15 17:30:40 +0200
committerMatthias Schiffer <matthias@gamezock.de>2009-05-15 17:30:40 +0200
commitc8d469cc3de8ef2fb95f7b47355ebf5318a4c22f (patch)
tree2cb0bd20306f89f3da11ff22b19865ed99225b2f /src/Net/Listener.h
parent8324b947487f72fd8cfc439ea5ae5bd1187fff1b (diff)
downloadmad-c8d469cc3de8ef2fb95f7b47355ebf5318a4c22f.tar
mad-c8d469cc3de8ef2fb95f7b47355ebf5318a4c22f.zip
Einfache (ziemlich kaputte) Multithreaded IO
Diffstat (limited to 'src/Net/Listener.h')
-rw-r--r--src/Net/Listener.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/Net/Listener.h b/src/Net/Listener.h
index ca19947..3805403 100644
--- a/src/Net/Listener.h
+++ b/src/Net/Listener.h
@@ -23,16 +23,17 @@
#include "IPAddress.h"
#include <gnutls/gnutls.h>
-#include <list>
-#include <vector>
#include <map>
#include <string>
+#include <sigc++/connection.h>
+
namespace Mad {
namespace Net {
class ServerConnection;
+// TODO XXX Thread-safeness XXX
class Listener {
private:
std::string x905CertFile, x905KeyFile;
@@ -41,10 +42,15 @@ class Listener {
gnutls_dh_params_t dh_params;
- std::list<ServerConnection*> connections;
+ std::map<ServerConnection*, std::pair<sigc::connection, sigc::connection> > connections;
+
+ sigc::signal<void, ServerConnection*> signal;
void acceptHandler(int);
+ void connectHandler(ServerConnection *con);
+ void disconnectHandler(ServerConnection *con);
+
// Prevent shallow copy
Listener(const Listener &o);
Listener& operator=(const Listener &o);
@@ -53,7 +59,7 @@ class Listener {
Listener(const std::string &x905CertFile0, const std::string &x905KeyFile0, const IPAddress &address0 = IPAddress()) throw(Exception);
virtual ~Listener();
- ServerConnection* getConnection();
+ sigc::signal<void, ServerConnection*> signalNewConnection() const {return signal;}
};
}