X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FSocket%2FSocketProtocol.hh;h=327032238dbd124144305f8995a6a945d019c0f2;hb=7ee689fe38d66aa3a0004d55e8708750d35adc0b;hp=8538b17869b1f4f4fda1b940f0b3467586d12445;hpb=4d7356cbd92801bc0c4bec27fffe3b0024807185;p=senf.git diff --git a/senf/Socket/SocketProtocol.hh b/senf/Socket/SocketProtocol.hh index 8538b17..3270322 100644 --- a/senf/Socket/SocketProtocol.hh +++ b/senf/Socket/SocketProtocol.hh @@ -57,7 +57,7 @@ /** \defgroup concrete_protocol_group Protocol Implementations (Concrete Protocol Classes) \ingroup protocol_group - Theese protocol classes define concrete and complete protocol implementations. They inherit from + These protocol classes define concrete and complete protocol implementations. They inherit from ConcreteSocketProtocol and are used with the ProtocolClientSocketHandle and ProtocolServerSocketHandle templates to instantiate socket handles. Appropriate typedefs are always provided. @@ -87,12 +87,12 @@ #include "SocketHandle.ih" //#include "SocketProtocol.mpp" -///////////////////////////////hh.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace senf { /// \addtogroup protocol_group - /// @{ + //\{ class SocketPolicyBase; @@ -103,16 +103,16 @@ namespace senf { \attention SocketProtocol must \e always be inherited using public \e virtual inheritance. */ - class SocketProtocol + class SocketProtocol : boost::noncopyable { public: - /////////////////////////////////////////////////////////////////////////// + //-//////////////////////////////////////////////////////////////////////// // Types - /////////////////////////////////////////////////////////////////////////// + //-//////////////////////////////////////////////////////////////////////// ///\name Structors and default members - ///@{ + //\{ SocketProtocol(); virtual ~SocketProtocol() = 0; @@ -121,13 +121,13 @@ namespace senf { // no copy // no conversion constructors - ///@} - /////////////////////////////////////////////////////////////////////////// + //\} + //-//////////////////////////////////////////////////////////////////////// virtual SocketPolicyBase const & policy() const = 0; ///< Access the policy instance - /////////////////////////////////////////////////////////////////////////// + //-//////////////////////////////////////////////////////////////////////// // Virtual interface virtual unsigned available() const = 0; @@ -138,7 +138,7 @@ namespace senf { in a single (non-blocking) read operation. If the socket does not support reading (viz. NotReadablePolicy is set), this member should always return \c 0. - + Depending on the protocol, it may not be possible to return a good value. In this case, an upper bound may be returned (e.g.: When reading from a socket which @@ -159,16 +159,16 @@ namespace senf { 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 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 is therefore safe to be - called from a destructor. + block. Like the overridden method, this member will + ignore failures and will never throw. It is therefore + safe to be called from a destructor. \fixme Move into (at least) BSDSocketProtocol */ virtual void state(SocketStateMap & map, unsigned lod) const; @@ -180,7 +180,7 @@ namespace senf { \a lod value with a default value of 0. The interpretation of the \a lod value is completely implementation defined. - + Every class derived from SocketProtocol should reimplement state(). The reimplemented method should call (all) baseclass-implementations of this @@ -191,21 +191,21 @@ namespace senf { keys are interpreted as hierarchical strings with '.' as a separator (like hostnames or struct or class members). They are automatically sorted correctly. - + The values are std:string with one additional feature: they allow assignment or conversion from *any* type as long as that type is streamable. This simplifies assigning non-string values to the map: - + \code map["socket.protocol.ip.address"] << peer(); map["socket.protocol.tcp.backlog"] << backlog(); \endcode - + This will work even if peer() returns an ip-address object or backlog() returns an integer. The values are automatically converted to their string representation. - + Additionally, if the slot the date is written to is not empty, the \<\< operator will add add a comma as separator. */ @@ -237,7 +237,7 @@ namespace senf { friend class SocketBody; }; - + template class ClientSocketHandle; template class ServerSocketHandle; @@ -256,7 +256,7 @@ namespace senf { 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 overlap, since otherwise there will be problems resolving overlapping members. - + \doc init_client init_server */ template @@ -264,14 +264,14 @@ namespace senf { : public virtual SocketProtocol { public: - /////////////////////////////////////////////////////////////////////////// + //-//////////////////////////////////////////////////////////////////////// // Types typedef SocketPolicy Policy; ///< The protocols policy - /////////////////////////////////////////////////////////////////////////// + //-//////////////////////////////////////////////////////////////////////// ///\name Structors and default members - ///@{ + //\{ ~ConcreteSocketProtocol() = 0; @@ -279,13 +279,13 @@ namespace senf { // no copy // no conversion constructors - ///@} - /////////////////////////////////////////////////////////////////////////// + //\} + //-//////////////////////////////////////////////////////////////////////// Policy const & policy() const; - + protected: - ClientSocketHandle clientHandle() const; + ClientSocketHandle clientHandle() const; ///< Get client handle for associated socket /**< Returns a client handle for the socket associated with this protocol instance */ @@ -302,10 +302,10 @@ namespace senf { Policy policy_; }; - /// @} + //\} } -///////////////////////////////hh.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #include "SocketProtocol.cci" //#include "SocketProtocol.ct" #include "SocketProtocol.cti"