/* * Ivy League * * Sockets * * Copyright 1990-2000 * Laboratoire de Recherche en Informatique (LRI) * Centre d'Etudes de la Navigation Aerienne (CENA) * * original code by Michel Beaudouin-Lafon, * modified by Stephane Chatty and Stephane Sire * * $Id$ * */ #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 IvlSocket : public IvlChannel { protected: IvlAddress* BAddr; IvlAddress* CAddr; int AddrFamily; bool Ready; /*?public?*/ IvlSocket (IvlAddress*, IvlAddress*); IvlSocket (const IvlSocket& s); ~IvlSocket (); public: virtual int SockType () = 0; inline int Family () { return AddrFamily; } inline void SetFamily (int f) { AddrFamily = f; } inline bool IsReady () const { return Ready; } void BindTo (IvlAddress*); void ConnectTo (IvlAddress*); inline IvlAddress* BoundTo () { return BAddr; } inline IvlAddress* ConnectedTo () { return CAddr; } bool Open (); int Bind (IvlAddress* = 0); int Connect (IvlAddress* = 0); int Accept (); bool Setup (); bool ReuseAddress (bool = true); bool AllowBroadcast (bool = true); char* StrRepr (char* = StrReprBuf); }; #endif /* Socket_H_ */