Update of /cvsroot/pclasses/pclasses2/include/pclasses/Net
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20255/include/pclasses/Net
Modified Files:
Socket.h
Log Message:
Added SocketListener.
Index: Socket.h
===================================================================
RCS file: /cvsroot/pclasses/pclasses2/include/pclasses/Net/Socket.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- Socket.h 26 Jan 2005 10:23:17 -0000 1.6
+++ Socket.h 7 Feb 2005 18:47:13 -0000 1.7
@@ -23,7 +23,9 @@
#include <pclasses/Export.h>
#include <pclasses/BasicTypes.h>
+#include <pclasses/Signal.h>
#include <pclasses/IO/IODevice.h>
+#include <pclasses/System/EventQueue.h>
#include <pclasses/Net/NetworkAddress.h>
namespace P {
@@ -32,9 +34,13 @@
typedef uint16_t port_t;
+class SocketListener;
+
//! Socket
class PNET_EXPORT Socket: public IO::IODevice {
public:
+ friend class SocketListener;
+
enum Domain {
Inet,
Inet6,
@@ -54,7 +60,6 @@
};
Socket() throw();
- Socket(Domain domain, Type type, int proto = 0) throw(IO::IOError);
~Socket() throw();
Domain domain() const throw();
@@ -92,6 +97,8 @@
static Domain addrFamily2Domain(int family);
protected:
+ Socket(Domain domain, Type type, int proto = 0) throw(IO::IOError);
+
void open(Domain domain, Type type, int proto)
throw(IO::IOError);
@@ -113,6 +120,41 @@
int _handle;
};
+
+//! Socket Event-listener
+class PNET_EXPORT SocketListener: public System::EventListener {
+ public:
+ enum EventMask {
+ Read = 0x01,
+ Write = 0x02,
+ Error = 0x04
+ };
+
+ SocketListener(Socket& s);
+ SocketListener(System::EventQueue& evq, Socket& s);
+ ~SocketListener();
+
+ Socket& socket() const throw();
+
+ void setEventMask(int mask);
+ int eventMask() const throw();
+
+ Signal1<void, SocketListener&> sigRead;
+ Signal1<void, SocketListener&> sigWrite;
+ Signal1<void, SocketListener&> sigError;
+
+ protected:
+ virtual void onRead();
+ virtual void onWrite();
+ virtual void onError();
+
+ private:
+ void signaled(const System::Event& ev);
+ unsigned long _handle;
+};
+
+
+
//! Datagram Socket
class PNET_EXPORT DatagramSocket: public virtual Socket {
public:
@@ -151,9 +193,11 @@
class PNET_EXPORT StreamSocket: public virtual Socket {
public:
StreamSocket() throw();
+ StreamSocket(Domain d, int proto) throw(IO::IOError);
StreamSocket(StreamSocketServer& srv) throw(IO::IOError);
~StreamSocket() throw();
+ void open(Domain d, int proto) throw(IO::IOError);
void open(StreamSocketServer& srv) throw(IO::IOError);
};
|