diff options
Diffstat (limited to 'src/Net')
-rw-r--r-- | src/Net/Connection.cpp | 4 | ||||
-rw-r--r-- | src/Net/Connection.h | 5 | ||||
-rw-r--r-- | src/Net/Makefile.in | 2 |
3 files changed, 9 insertions, 2 deletions
diff --git a/src/Net/Connection.cpp b/src/Net/Connection.cpp index 49b51b4..298eb3e 100644 --- a/src/Net/Connection.cpp +++ b/src/Net/Connection.cpp @@ -74,7 +74,7 @@ bool Connection::recieve() { continue; if(!header.length) { - Packet packet(header.type, header.requestId); + signal(this, Packet(header.type, header.requestId)); return true; } @@ -96,7 +96,7 @@ bool Connection::recieve() { if(read < header.length+sizeof(Packet::Data)) continue; - Packet packet(header.type, header.requestId, data, header.length); + signal(this, Packet(header.type, header.requestId, data, header.length)); delete [] data; data = 0; diff --git a/src/Net/Connection.h b/src/Net/Connection.h index 80b721f..f48ef20 100644 --- a/src/Net/Connection.h +++ b/src/Net/Connection.h @@ -21,6 +21,7 @@ #define MAD_NET_CONNECTION_H_ #include <gnutls/gnutls.h> +#include <sigc++/signal.h> #include "Packet.h" namespace Mad { @@ -36,6 +37,8 @@ class Connection { unsigned long read; + sigc::signal<void,const Connection*,const Packet&> signal; + protected: virtual gnutls_session_t& getSession() = 0; @@ -51,6 +54,8 @@ class Connection { bool send(const Packet &packet); bool recieve(); + sigc::signal<void,const Connection*,const Packet&> signalRecieve() const {return signal;} + static void init() { gnutls_global_init(); } diff --git a/src/Net/Makefile.in b/src/Net/Makefile.in index 4e7923a..83b718d 100644 --- a/src/Net/Makefile.in +++ b/src/Net/Makefile.in @@ -173,6 +173,8 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +sigc_CFLAGS = @sigc_CFLAGS@ +sigc_LIBS = @sigc_LIBS@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ |