summaryrefslogtreecommitdiffstats
path: root/src/Net/Listener.h
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2009-05-20 01:08:16 +0200
committerMatthias Schiffer <matthias@gamezock.de>2009-05-20 01:08:16 +0200
commit776377bb21ee1cfe0bcdbc000f7c6fa0be227226 (patch)
treea60e8bdd92678dece5fbb96e75535eba2b61b7da /src/Net/Listener.h
parentbadc0da3b74d99c90b7b28180d08cd6d08830254 (diff)
downloadmad-776377bb21ee1cfe0bcdbc000f7c6fa0be227226.tar
mad-776377bb21ee1cfe0bcdbc000f7c6fa0be227226.zip
Netzwerk-Code auf boost::asio umgestellt
Diffstat (limited to 'src/Net/Listener.h')
-rw-r--r--src/Net/Listener.h41
1 files changed, 20 insertions, 21 deletions
diff --git a/src/Net/Listener.h b/src/Net/Listener.h
index 26dffab..0833cdf 100644
--- a/src/Net/Listener.h
+++ b/src/Net/Listener.h
@@ -20,46 +20,45 @@
#ifndef MAD_NET_LISTENER_H_
#define MAD_NET_LISTENER_H_
-#include "IPAddress.h"
-
-#include <gnutls/gnutls.h>
#include <map>
#include <string>
-#include <boost/signal.hpp>
+#include "Connection.h"
+#include "Exception.h"
namespace Mad {
namespace Net {
-class ServerConnection;
-
// TODO XXX Thread-safeness XXX
-class Listener {
+class Listener : boost::noncopyable {
private:
- std::string x905CertFile, x905KeyFile;
- IPAddress address;
- int sock;
+ class ServerConnection : public Connection {
+ public:
+ friend class Listener;
- gnutls_dh_params_t dh_params;
+ ServerConnection(boost::asio::ssl::context &sslContext) : Connection(sslContext) {}
+ };
- std::map<ServerConnection*, std::pair<boost::signals::connection, boost::signals::connection> > connections;
+ std::string x905CertFile, x905KeyFile;
+ boost::asio::ip::tcp::endpoint address;
+ boost::asio::ip::tcp::acceptor acceptor;
+ boost::asio::ssl::context sslContext;
- boost::signal1<void, ServerConnection*> signal;
+ std::map<boost::shared_ptr<ServerConnection>, std::pair<boost::signals::connection, boost::signals::connection> > connections;
- void acceptHandler(int);
+ boost::signal1<void, boost::shared_ptr<Connection> > signal;
- void connectHandler(ServerConnection *con);
- void disconnectHandler(ServerConnection *con);
+ void handleAccept(const boost::system::error_code &error, boost::shared_ptr<ServerConnection> con);
- // Prevent shallow copy
- Listener(const Listener &o);
- Listener& operator=(const Listener &o);
+ void handleConnect(boost::shared_ptr<ServerConnection> con);
+ void handleDisconnect(boost::shared_ptr<ServerConnection> con);
public:
- Listener(const std::string &x905CertFile0, const std::string &x905KeyFile0, const IPAddress &address0 = IPAddress()) throw(Exception);
+ Listener(const std::string &x905CertFile0, const std::string &x905KeyFile0,
+ const boost::asio::ip::tcp::endpoint &address0 = boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 6666)) throw(Exception);
virtual ~Listener();
- boost::signal1<void, ServerConnection*>& signalNewConnection() {return signal;}
+ boost::signal1<void, boost::shared_ptr<Connection> >& signalNewConnection() {return signal;}
};
}