Add missing Build-Depends to debian/control
[senf.git] / Socket / FileHandle.hh
index 5b0e34d..377a8a6 100644 (file)
 
 /** \defgroup handle_group The Handle Hierarchy
 
-    \htmlonly 
-    <map name="FhHierarchy">
-      <area shape="rect" alt="FileHandle" href="classsenf_1_1FileHandle.html" title="FileHandle" coords="247,1,345,27" />
-      <area shape="rect" alt="SocketHandle" href="classsenf_1_1SocketHandle.html" title="SocketHandle" coords="235,61,355,87" />
-      <area shape="rect" alt="ClientSocketHandle" href="classsenf_1_1ClientSocketHandle.html" title="ClientSocketHandle" coords="32,140,198,167" />
-      <area shape="rect" alt="ServerSocketHandle" href="classsenf_1_1ServerSocketHandle.html" title="ServerSocketHandle" coords="386,140,558,168" />
-      <area shape="rect" alt="ProtocolServerSocketHandle" href="classsenf_1_1ProtocolServerSocketHandle.html" title="ProtocolServerSocketHandle" coords="354,202,590,228" />
-      <area shape="rect" alt="ProtocolClientSocketHandle" href="classsenf_1_1ProtocolClientSocketHandle.html" title="ProtocolClientSocketHandle" coords="1,202,230,228" />
-    </map>
-    <center>
-      <img src="FhHierarchy.png" border="0" alt="FhHierarchy" usemap="#FhHierarchy">
-    </center>
-    \endhtmlonly
+    <div class="diamap" name="FhHierarchy">
+    <span coords="233,47,438,89">\ref SocketHandle</span>
+    <span coords="32,126,281,168">\ref ClientSocketHandle</span>
+    <span coords="0,187,326,229">\ref ProtocolClientSocketHandle</span>
+    <span coords="350,187,684,229">\ref ProtocolServerSocketHandle</span>
+    <span coords="243,0,343,28">\ref FileHandle</span>
+    <span coords="382,126,638,168">\ref ServerSocketHandle</span>
+    </div>
+    \htmlonly <img src="FhHierarchy.png" border="0" alt="FhHierarchy" usemap="#FhHierarchy"> \endhtmlonly
 
     The senf::FileHandle class is the base of a hierarchy of socket handle classes (realized as
     templates). These classes provide an interface to the complete socket API. While going down the
     the SocketHandle classes should not be changed.
  */
 
-#ifndef HH_FileHandle_
-#define HH_FileHandle_ 1
+#ifndef HH_SENF_Socket_FileHandle_
+#define HH_SENF_Socket_FileHandle_ 1
 
 // Custom includes
 #include <memory> // std::auto_ptr
 #include "../Utils/safe_bool.hh"
+#include "../Scheduler/ClockService.hh"
 
 //#include "FileHandle.mpp"
 ///////////////////////////////hh.p////////////////////////////////////////
@@ -141,12 +138,31 @@ namespace senf {
 
         bool readable() const;       ///< Check, whether a read on the handle would not block
                                      ///< (ignoring blocking state)
-        void waitReadable() const;   ///< Wait, until read on the handle would not block (ignoring
+        bool waitReadable(senf::ClockService::clock_type timeout = -1) const;  
+                                     ///< Wait, until read on the handle would not block (ignoring
                                      ///< blocking state)
+                                     /**< \param[in] timeout max time to wait, default is to wait
+                                              forever.  
+                                          \returns \c true, if handle became readable or \c false on
+                                              timeout. */
         bool writeable() const;      ///< Check, whether a write on the handle would not block
                                      ///< (ignoring blocking state)
-        void waitWriteable() const;  ///< Wait, until a write on the handle would not block
+        bool waitWriteable(senf::ClockService::clock_type timeout = -1) const;
+                                     ///< Wait, until a write on the handle would not block
                                      ///< (ignoring blocking state)
+                                     /**< \param[in] timeout max time to wait, default is to wait
+                                              forever.  
+                                          \returns \c true, if handle became writable or \c false on
+                                              timeout. */
+        bool oobReadable() const;    ///< Check, whether a read of prioritized data on the handle 
+                                     ///< would not block (ignoring blocking state)
+        bool waitOOBReadable(senf::ClockService::clock_type timeout = -1) const; 
+                                     ///< Wait, until read of prioritized data on the handle does
+                                     ///< not block (ignoring blocking state)
+                                     /**< \param[in] timeout max time to wait, default is to wait
+                                              forever.  
+                                          \returns \c true, if handle became readable for
+                                              out-of-band data or \c false on timeout. */
 
         bool blocking() const;       ///< Return current blocking state
         void blocking(bool status);  ///< Set blocking state
@@ -199,7 +215,7 @@ namespace senf {
         friend class FileBody;
     };
 
-    /** \brief Adapt FileHandle to senf::Scheduler
+    /** \brief Adapt FileHandle to senf::scheduler
         \related senf::FileHandle
 
         \internal