X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FSocketProtocol.hh;h=b41fccb8b05e182579462235abe3db3a3e5f30d0;hb=3863d46dd898b7bc35ea8c6ccd8563b18762a6b6;hp=5a25dd70832a030f4189619d6825618b64bfe483;hpb=14daa84b7c821626ae098bedd93ef07d98bf3a40;p=senf.git diff --git a/Socket/SocketProtocol.hh b/Socket/SocketProtocol.hh index 5a25dd7..b41fccb 100644 --- a/Socket/SocketProtocol.hh +++ b/Socket/SocketProtocol.hh @@ -1,8 +1,8 @@ // $Id$ // // Copyright (C) 2006 -// Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund // // This program is free software; you can redistribute it and/or modify @@ -32,22 +32,19 @@ /** \defgroup protocol_group The Protocol Classes - \htmlonly - - SocketPolicy - ConcreteSocketProtocol - SocketProtocol - BSDSocketProtocol - AddressableBSDSocketProtocol - IPv4Protocol - IPv6Protocol - TCPProtocol - TCPv4SocketProtocol - TCPv6SocketProtocol - PacketProtocol - - Protocols - \endhtmlonly +
+ \ref SocketProtocol + \ref UNSocketProtocol + \ref PacketSocketProtocol + \ref ConcreteSocketProtocol + \ref BSDSocketProtocol + \ref DatagramSocketProtocol + \ref TCPSocketProtocol + \ref UNDatagramSocketProtocol + \ref AddressableBSDSocketProtocol + \ref TCPv4SocketProtocol +
+ \htmlonly Protocols \endhtmlonly The socket handle classes and templates only implement the most important socket API methods using the policy framework. To access the complete API, the protocol interface is @@ -92,8 +89,8 @@ accessibility of the socket body from all facets. */ -#ifndef HH_SocketProtocol_ -#define HH_SocketProtocol_ 1 +#ifndef HH_SENF_Socket_SocketProtocol_ +#define HH_SENF_Socket_SocketProtocol_ 1 // Custom includes #include @@ -171,10 +168,11 @@ namespace senf { not support the notion of EOF, this member should always return \c false. */ - virtual void close() const; ///< Close socket + virtual void close(); ///< Close socket /**< This override will automatically \c shutdown() the socket whenever it is closed. - \throws senf::SystemException */ + \throws senf::SystemException + \fixme Move into (at least) BSDSOcketProtocol */ virtual void terminate() const; ///< Forcibly close socket /**< This override will automatically \c shutdown() the @@ -182,7 +180,8 @@ namespace senf { 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 is therefore safe to be - called from a destructor. */ + called from a destructor. + \fixme Move into (at least) BSDSocketProtocol */ virtual void state(SocketStateMap & map, unsigned lod) const; ///< Return socket state information @@ -251,8 +250,8 @@ namespace senf { friend class SocketBody; }; - template class ClientSocketHandle; - template class ServerSocketHandle; + template class ClientSocketHandle; + template class ServerSocketHandle; /** \brief Concrete Socket Protocol implementation base class @@ -264,7 +263,7 @@ namespace senf { A protocol implementation may define the protocol interface directly. It can also (additionally) make use of multiple inheritance to combine a set of protocol facets into a specific protocol implementation (i.e. TCPv4SocketProtocol inherits from - ConcreteSocketProtocol and from the protocol facets IPv4Protocol, TCPProtocol, + ConcreteSocketProtocol and from the protocol facets IPv4SocketProtocol, TCPSocketProtocol, BSDSocketProtocol and AddressableBSDSocketProtocol). The protocol facets are not concrete protocols themselves, they are combined to build concrete protocols. This structure will remove a lot of code duplication. It is important to ensure, that the protocol facets do not