diff options
Diffstat (limited to 'comm/Socket.h')
-rw-r--r-- | comm/Socket.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/comm/Socket.h b/comm/Socket.h new file mode 100644 index 0000000..db84209 --- /dev/null +++ b/comm/Socket.h @@ -0,0 +1,60 @@ +/* + * The Unix Channel + * + * by Michel Beaudouin-Lafon + * + * Copyright 1990-1993 + * Laboratoire de Recherche en Informatique (LRI) + * + * Sockets + * + * $Id$ + * $CurLog$ + */ + +#ifndef Socket_H_ +#define Socket_H_ + +#include "cplus_bugs.h" +#include "Channel.h" +#include "Address.h" + +extern char* StrReprBuf; + +#define SOCK_UNSPEC 0 + +// Virtual base class for sockets. +// A socket is a channel and an address. +// As a channel, it is immutable, and must be initialized once and for all at creation. +// +class UchSocket : public UchChannel { +protected: + pUchAddress BAddr; + pUchAddress CAddr; + int AddrFamily; +public: + UchSocket (); + UchSocket (UchAddress*, UchAddress*); + ~UchSocket (); + UchSocket (const UchSocket& s); + + UchChannel* Copy () const; +virtual int SockType (); // SOCK_UNSPEC, SOCK_STREAM, SOCK_DGRAM +inline int Family () { return AddrFamily; } +inline void SetFamily (int f) { AddrFamily = f; } + + void BindTo (UchAddress*); + void ConnectTo (UchAddress*); +inline UchAddress* BoundTo () { return BAddr; } +inline UchAddress* ConnectedTo () { return CAddr; } + bool Open (); + int Bind (); + int Bind (UchAddress*); + int Connect (); + int Connect (UchAddress*); + bool Setup (); + char* StrRepr (char* = StrReprBuf); +}; + +#endif /* Socket_H_ */ + |