Packets: Fix VariantParser invalid parser access bug
[senf.git] / Socket / Protocols / BSDSocketProtocol.hh
index 5e08b59..715837f 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
@@ -23,8 +23,8 @@
 /** \file
     \brief BSDSocketProtocol public header */
 
-#ifndef HH_BSDSocketProtocol_
-#define HH_BSDSocketProtocol_ 1
+#ifndef HH_SENF_Socket_Protocols_BSDSocketProtocol_
+#define HH_SENF_Socket_Protocols_BSDSocketProtocol_ 1
 
 // Custom includes
 #include "../../Socket/SocketProtocol.hh"
@@ -59,27 +59,7 @@ namespace senf {
                                              forever.
                                              \param[in] enable \c true to activate linger
                                              \param[in] timeout linger timeout in seconds */
-
-    };
-
-    /** \brief Protocol facet providing basic connection oriented BSD socket functions
-
-        AddressableBSDSocketProtocol provides the BSD socket API as it generically applies to
-        addressable (connection oriented) sockets.
-     */
-    class AddressableBSDSocketProtocol
-        : public virtual SocketProtocol
-    {
-    public:
-        bool reuseaddr() const;         ///< Return current reuseaddr state
-                                        /**< \returns \c true if \c SO_REUSEADDR is currently
-                                             enabled, \c false otherwise*/
-        void reuseaddr(bool value) const; ///< Set reuseraddr state
-                                        /**< A \c true value enables \c SO_REUSEADDR, \c false will
-                                             disable it.
-                                             \param[in] value new \c SO_REUSEADDR state */
-
-        boost::uint8_t priority() const;  ///< Get packet priority assigned to outgoing packets
+       boost::uint8_t priority() const;  ///< Get packet priority assigned to outgoing packets
                                         /**< This call will return the priority value assigned to
                                              packets sent via this socket. Depending on the
                                              protocol, this value may also be placed inside the
@@ -89,7 +69,12 @@ namespace senf {
                                         /**< Changes the packet queueing priority. Additionally may
                                              set protocol specific options. For IPv4 sockets, it
                                              sets the TOS field.
-                                             \param[in] v new socket priority */
+                                             \param[in] value new socket priority */
+
+        int error() const;              ///< Get and clear pending socket error
+                                        /**< This call will get <em>and clear</em> a pending socket
+                                             error. This includes asynchronous errors received via
+                                             the network (e.g. via ICMP). */
 
         unsigned rcvbuf() const;        ///< Check receive buffer size
                                         /**< \returns size of receive buffer in bytes 
@@ -109,6 +94,24 @@ namespace senf {
         void sndbuf(unsigned size) const; ///< Change size of send buffer
                                         /**< \param[in] size new send buffer size */
         
+     };
+
+    /** \brief Protocol facet providing basic connection oriented BSD socket functions
+
+        AddressableBSDSocketProtocol provides the BSD socket API as it generically applies to
+        addressable (connection oriented) sockets.
+     */
+    class AddressableBSDSocketProtocol
+        : public virtual SocketProtocol
+    {
+    public:
+        bool reuseaddr() const;         ///< Return current reuseaddr state
+                                        /**< \returns \c true if \c SO_REUSEADDR is currently
+                                             enabled, \c false otherwise*/
+        void reuseaddr(bool value) const; ///< Set reuseraddr state
+                                        /**< A \c true value enables \c SO_REUSEADDR, \c false will
+                                             disable it.
+                                             \param[in] value new \c SO_REUSEADDR state */
     };
 
     /// @}