/* * Ivy League * * Unix Addresses * * 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$ * */ #include "UnixAddress.h" #include "error.h" #include // constructors for Unix addresses // a Unix domain address is just a filename // -> some problems: check for access, when to unlink it ? // to do : generate name from a template (for uniqueness) // /*?nodoc?*/ IvlUnixAddress :: IvlUnixAddress () : IvlAddress () { } /*? Create a Unix domain address associated to file \var{filename}. The file is not unlinked when the address is destroyed; it should be unlinked by the application whenever the last socket using this address is closed. ?*/ IvlUnixAddress :: IvlUnixAddress (const char* filename) : IvlAddress () { Addr.sun_family = AF_UNIX; strcpy (Addr.sun_path, filename); Valid = true; // should check access to file ??? // unlink if already there ? } /*?nodoc?*/ IvlUnixAddress :: ~IvlUnixAddress () { // how to unlink the file ?? } /*?nodoc?*/ int IvlUnixAddress :: Family () { return AF_UNIX; } /*?nodoc?*/ int IvlUnixAddress :: Length () { if (Valid) return (Addr.sun_path + strlen (Addr.sun_path)) - (char*) &Addr; return 0; } /*?nodoc?*/ SockAddr* IvlUnixAddress :: GetSockAddr () { return (SockAddr*) &Addr; } /*?nodoc?*/ char* IvlUnixAddress :: StrRepr (char* buf) { sprintf (buf, "%s", Addr.sun_path); return buf; }