// $Id$
//
-// Copyright (C) 2006
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
-// Stefan Bund <stefan.bund@fokus.fraunhofer.de>
+// Copyright (C) 2006
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
+// Stefan Bund <g0dil@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
// Free Software Foundation, Inc.,
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#ifndef HH_ProtocolServerSocketHandle_
-#define HH_ProtocolServerSocketHandle_ 1
+/** \file
+ \brief ProtocolServerSocketHandle public header
+ */
+
+#ifndef HH_SENF_Socket_ProtocolServerSocketHandle_
+#define HH_SENF_Socket_ProtocolServerSocketHandle_ 1
// Custom includes
#include "ServerSocketHandle.hh"
+#include "../config.hh"
+#include "../Utils/Tags.hh"
#include "ProtocolServerSocketHandle.mpp"
///////////////////////////////hh.p////////////////////////////////////////
-namespace satcom {
-namespace lib {
-
+namespace senf {
+
+ /// \addtogroup handle_group
+ /// @{
+
template <class Protocol> class ProtocolClientSocketHandle;
- /** \brief
+ /** \brief Protocol specific socket handle (server interface)
+
+ The ProtocolServerSocketHandle is the server interface leaf class of the handle
+ hierarchy. This is the class to instantiate to open a new socket. This is also the \e only
+ class, which can be used to open a server socket.
+
+ The \a Protocol template argument defines the protocol of the socket. This protocol provides
+ the protocol interface of the socket as well as the complete socket policy of this protocol.
+
+ The ProtocolServerSocketHandle adds the protocol interface as an additional interface to the
+ socket handle. This interface is only accessible via the protocol class. All socket
+ functionality not available through the policy interface (see ServerSocketHandle) is
+ accessible via the protocol() member.
+
+ A ProtocolServerSocketHandle is only meaningful for connection oriented addressable
+ protocols (CommunicationPolicy is ConnectedCommunicationPolicy and AddressingPolicy is not
+ NoAddressingPolicy).
+
+ \see \ref protocol_group
*/
template <class SocketProtocol>
class ProtocolServerSocketHandle
///////////////////////////////////////////////////////////////////////////
// Types
- typedef SocketProtocol Protocol;
+ typedef SocketProtocol Protocol; ///< The socket protocol
///////////////////////////////////////////////////////////////////////////
///\name Structors and default members
///@{
+ /** \brief Create new server socket
+
+ This constructor is one of the possible constructors. The exact Signature of the
+ constructor (or constructors) is defined by the \c init_server() member (or members) of
+ the \a Protocol class. ProtocolClientSocketHandle defines a number of constructors
+ taking up to 9 arguments which just forward to a corresponding \a Protocol\c
+ ::init_server() member. See the documentation of the respective Protocol class for a
+ detailed documentation of that protocols constructors.
+ */
+
ProtocolServerSocketHandle();
-# define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 9, "Socket/ProtocolServerSocketHandle.mpp", 1))
+# define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 9, SENF_ABSOLUTE_INCLUDE_PATH(Socket/ProtocolServerSocketHandle.mpp), 1))
# include BOOST_PP_ITERATE()
+ /** \brief Create uninitialized socket variable
+
+ This special constructor is called when passing
+ ProtocolServerSocketHandle::Uninitialized as only argument to the constructor. This will
+ create an in-\ref valid() socket handle which can however be assigned later with another
+ socket instance.
+
+ \implementation The socket handle will have no \c body allocated.
+ */
+ ProtocolServerSocketHandle(senf::NoInit_t);
///@}
///////////////////////////////////////////////////////////////////////////
- Protocol const & protocol();
+ Protocol const & protocol(); ///< Access the protocol interface
+ /**< The returned protocol class reference gives access to
+ the complete protocol interface as defined by that
+ class. See the respective protocol class documentation.
+ \returns \a Protocol class reference */
ProtocolClientSocketHandle<SocketProtocol> accept();
};
-}}
+ /// @}
+}
///////////////////////////////hh.e////////////////////////////////////////
//#include "ProtocolServerSocketHandle.cci"
\f
// Local Variables:
// mode: c++
-// c-file-style: "satcom"
+// fill-column: 100
+// c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// comment-column: 40
// End: