-// Copyright (C) 2007
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum NETwork research (NET)
-// David Wagner <david.wagner@fokus.fraunhofer.de>
+// $Id$
+//
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
+// David Wagner <dw6@berlios.de>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
This protocol facet introduces all the socket api protocol members which are related to Unix
Domain addressing.
-
- \todo connect() is only available on stream sockets. We want to access bind() and connect()
- via the ClientSocketHandle -> see SocketProtocol todo point
*/
class UNProtocol
: public virtual SocketProtocol
{
public:
- void connect(UNSocketAddress const & address) const; ///< Connect to a unix domain socket
- /**< \todo make this obsolete by allowing access to the
- ClientSocketHandle from ConcreateSocketProtocol
- \param[in] address Address to connect to */
- void bind(UNSocketAddress const & address) const; ///< Set local socket address (path)
- /**< \todo make this obsolete by allowing access to the
- ClientSocketHandle from ConcreateSocketProtocol
- \param[in] address Address to set */
- ///\name Abstract Interface Implementation
- ///@{
+ virtual void close() const; ///< Close socket
+ /**< This override will automatically \c shutdown() the
+ socket whenever it is closed.
+ \throws senf::SystemException */
+ virtual void terminate() const; ///< Forcibly close socket
+ /**< This override will automatically \c shutdown() the
+ socket whenever it is called. Additionally it will
+ disable SO_LINGER to ensure, that v_terminate will not
+ block. Like the overriden method, this member will ignore
+ failures and will never throw. It therefore safe to be
+ called from a destructor. */ ///\name Abstract Interface Implementation
+ ///@{
unsigned available() const;
bool eof() const;
- };
+
+ private:
+ void check_and_unlink() const;
+
+ std::string path_;
+ };
+
+ ///@}
}
///////////////////////////////hh.e////////////////////////////////////////