X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FFileHandle.hh;h=377a8a61fbd9b036928e0af3e7c825fe1e614ba9;hb=92f8630b75f3ef50e73c48cde58645dcd1534e27;hp=2ae609af89d770962312fd3e8d366ac734213e86;hpb=a1a6c76a214ad1935032826713cabaf9ac57bf07;p=senf.git
diff --git a/Socket/FileHandle.hh b/Socket/FileHandle.hh
index 2ae609a..377a8a6 100644
--- a/Socket/FileHandle.hh
+++ b/Socket/FileHandle.hh
@@ -26,19 +26,15 @@
/** \defgroup handle_group The Handle Hierarchy
- \htmlonly
-
-
-
-
- \endhtmlonly
+
+ \ref SocketHandle
+ \ref ClientSocketHandle
+ \ref ProtocolClientSocketHandle
+ \ref ProtocolServerSocketHandle
+ \ref FileHandle
+ \ref ServerSocketHandle
+
+ \htmlonly \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
@@ -66,12 +62,13 @@
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 // std::auto_ptr
#include "../Utils/safe_bool.hh"
+#include "../Scheduler/ClockService.hh"
//#include "FileHandle.mpp"
///////////////////////////////hh.p////////////////////////////////////////
@@ -123,6 +120,7 @@ namespace senf {
///@{
FileHandle();
+ ~FileHandle();
// my default constructor
// default copy constructor
@@ -140,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
@@ -198,7 +215,7 @@ namespace senf {
friend class FileBody;
};
- /** \brief Adapt FileHandle to senf::Scheduler
+ /** \brief Adapt FileHandle to senf::scheduler
\related senf::FileHandle
\internal