Utils/Console: Add short help to 'ls' output
[senf.git] / Socket / ClientSocketHandle.hh
index 4030518..92635f9 100644 (file)
@@ -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 <g0dil@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
@@ -24,8 +24,8 @@
     \brief ClientSocketHandle public header
  */
 
-#ifndef HH_ClientSocketHandle_
-#define HH_ClientSocketHandle_ 1
+#ifndef HH_SENF_Socket_ClientSocketHandle_
+#define HH_SENF_Socket_ClientSocketHandle_ 1
 
 // Custom includes
 #include <boost/call_traits.hpp>
@@ -42,7 +42,7 @@ namespace senf {
     /// \addtogroup handle_group
     /// @{
 
-    template <class Policy> class ServerSocketHandle;
+    template <class SPolicy> class ServerSocketHandle;
 
     /** \brief Generic SocketHandle with client interface
 
@@ -63,8 +63,6 @@ namespace senf {
         <tr><td>bind()</td>       <td>AddressingPolicy::bind (\ref senf::AddressingPolicyBase)</td>      <td></td></tr>
         <tr><td>peer()</td>       <td>AddressingPolicy::peer (\ref senf::AddressingPolicyBase)</td>      <td></td></tr>
         <tr><td>local()</td>      <td>AddressingPolicy::local (\ref senf::AddressingPolicyBase)</td>     <td></td></tr>
-        <tr><td>rcvbuf()</td>     <td>BufferingPolicy::sndbuf (\ref senf::BufferingPolicyBase)</td>      <td></td></tr>
-        <tr><td>sndbuf()</td>     <td>BufferingPolicy::rcvbuf (\ref senf::BufferingPolicyBase)</td>      <td></td></tr>
         </table>
 
         It is important to note, that not all members are always accessible. Which are depends on
@@ -87,16 +85,16 @@ namespace senf {
         \see \ref policy_group \n
              \ref protocol_group
       */
-    template <class Policy>
+    template <class SPolicy>
     class ClientSocketHandle
-        : public SocketHandle<Policy>
+        : public SocketHandle<SPolicy>
     {
     public:
         ///////////////////////////////////////////////////////////////////////////
         // Types
 
         /// Address type from the addressing policy
-        typedef typename Policy::AddressingPolicy::Address Address;
+        typedef typename SPolicy::AddressingPolicy::Address Address;
         /// 'Best' type for passing address as parameter
         /** Depending on the type of \c Address, this will be either <tt>Address</tt> or <tt>Address
             const &</tt>. See <a
@@ -108,7 +106,7 @@ namespace senf {
         /** This class will probably only be usable, if the \c CommunicationPolicy is \c
             ConnectedCommunicationPolicy and the \c AddressingPolicy is not \c
             NoAddressingPolicy. */
-        typedef ServerSocketHandle<Policy> ServerSocketHandle;
+        typedef ServerSocketHandle<SPolicy> ServerHandle;
 
         ///////////////////////////////////////////////////////////////////////////
         ///\name Structors and default members
@@ -126,18 +124,18 @@ namespace senf {
 #       ifndef DOXYGEN
         template <class OtherPolicy>
         ClientSocketHandle(ClientSocketHandle<OtherPolicy> other,
-                           typename SocketHandle<Policy>::template IsCompatible<OtherPolicy>::type * = 0);
+                           typename SocketHandle<SPolicy>::template IsCompatible<OtherPolicy>::type * = 0);
 #       else
         ClientSocketHandle(ClientSocketHandle<OtherPolicy> other);
 #       endif
 
 #       ifndef DOXYGEN
         template <class OtherPolicy>
-        typename SocketHandle<Policy>::template IsCompatible<OtherPolicy>::type const &
+        typename SocketHandle<SPolicy>::template IsCompatible<OtherPolicy>::type const &
         operator=(ClientSocketHandle<OtherPolicy> other);
 #       else
         template <class OtherPolicy>
-        OtherPolicy const & operator=(ClientSocketHandle<OtherPolicy> other);
+        ClientSocketHandle<OtherPolicy> const & operator=(ClientSocketHandle<OtherPolicy> other);
 #       endif        
 
         ///@}
@@ -376,18 +374,18 @@ namespace senf {
 
             \throws senf::SystemException
          */
-        void         connect      (AddressParam addr);
+        void         connect      (AddressParam addr) const;
 
         /** \brief Set local address
 
             For addressable protocols (AddressingPolicy is not NoAddressingPolicy), bind() will set
             the local address of the socket.
 
-            \param[in] addr Local socket address to asign
+            \param[in] addr Local socket address to assign
 
             \throws senf::SystemException
          */
-        void         bind         (AddressParam addr);
+        void         bind         (AddressParam addr) const;
 
         /** \brief Query remote address
 
@@ -400,8 +398,8 @@ namespace senf {
 
             \throws senf::SystemException
          */
-        Address      peer         ();
-        void         peer         (Address & addr);
+        Address      peer         () const;
+        void         peer         (Address & addr) const;
                                         ///< Query remote address
                                         /**< \see \ref peer() */
 
@@ -415,31 +413,13 @@ namespace senf {
 
             \throws senf::SystemException
          */
-        Address      local        ();
-        void         local        (Address & addr);
+        Address      local        () const;
+        void         local        (Address & addr) const;
                                         ///< Query local address
                                         /**< \see \ref local() */
 
         ///@}
 
-        ///////////////////////////////////////////////////////////////////////////
-        ///\name Buffering
-        ///@{
-
-        unsigned     rcvbuf      ();    ///< Check size of receive buffer
-                                        /**< \returns size of receive buffer in bytes */
-        void         rcvbuf      (unsigned size);
-                                        ///< Set size of receive buffer
-                                        /**< \param[in] size size of receive buffer in bytes */
-
-        unsigned     sndbuf      ();    ///< Check size of send buffer
-                                        /**< \returns size of send buffer in bytes */
-        void         sndbuf      (unsigned size);
-                                        ///< Set size of send buffer
-                                        /**< \param[in] size size of send buffer in bytes */
-
-        ///@}
-
         static ClientSocketHandle cast_static(FileHandle handle);
         static ClientSocketHandle cast_dynamic(FileHandle handle);
 
@@ -447,15 +427,14 @@ namespace senf {
         void state(SocketStateMap & map, unsigned lod=0);
         std::string dumpState(unsigned lod=0);
 
+        unsigned available();
+
     protected:
         ClientSocketHandle(FileHandle other, bool isChecked);
-        explicit ClientSocketHandle(std::auto_ptr<SocketProtocol> protocol,
-                                    int fd = -1);
+        explicit ClientSocketHandle(std::auto_ptr<SocketBody> body);
 
     private:
-        unsigned available();
-
-        friend class senf::ServerSocketHandle<Policy>;
+        friend class senf::ServerSocketHandle<SPolicy>;
     };
 
     /// @}