Imported Upstream version 1.57.0
[platform/upstream/boost.git] / boost / asio / socket_base.hpp
index f964d00..e034d67 100644 (file)
@@ -2,7 +2,7 @@
 // socket_base.hpp
 // ~~~~~~~~~~~~~~~
 //
-// Copyright (c) 2003-2012 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com)
 //
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -16,7 +16,6 @@
 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
 
 #include <boost/asio/detail/config.hpp>
-#include <boost/detail/workaround.hpp>
 #include <boost/asio/detail/io_control.hpp>
 #include <boost/asio/detail/socket_option.hpp>
 #include <boost/asio/detail/socket_types.hpp>
@@ -45,9 +44,9 @@ public:
     /// Shutdown both send and receive on the socket.
     shutdown_both = implementation_defined
 #else
-    shutdown_receive = boost::asio::detail::shutdown_receive,
-    shutdown_send = boost::asio::detail::shutdown_send,
-    shutdown_both = boost::asio::detail::shutdown_both
+    shutdown_receive = BOOST_ASIO_OS_DEF(SHUT_RD),
+    shutdown_send = BOOST_ASIO_OS_DEF(SHUT_WR),
+    shutdown_both = BOOST_ASIO_OS_DEF(SHUT_RDWR)
 #endif
   };
 
@@ -67,14 +66,14 @@ public:
   /// Specifies that the data marks the end of a record.
   static const int message_end_of_record = implementation_defined;
 #else
-  BOOST_STATIC_CONSTANT(int,
-      message_peek = boost::asio::detail::message_peek);
-  BOOST_STATIC_CONSTANT(int,
-      message_out_of_band = boost::asio::detail::message_out_of_band);
-  BOOST_STATIC_CONSTANT(int,
-      message_do_not_route = boost::asio::detail::message_do_not_route);
-  BOOST_STATIC_CONSTANT(int,
-      message_end_of_record = boost::asio::detail::message_end_of_record);
+  BOOST_ASIO_STATIC_CONSTANT(int,
+      message_peek = BOOST_ASIO_OS_DEF(MSG_PEEK));
+  BOOST_ASIO_STATIC_CONSTANT(int,
+      message_out_of_band = BOOST_ASIO_OS_DEF(MSG_OOB));
+  BOOST_ASIO_STATIC_CONSTANT(int,
+      message_do_not_route = BOOST_ASIO_OS_DEF(MSG_DONTROUTE));
+  BOOST_ASIO_STATIC_CONSTANT(int,
+      message_end_of_record = BOOST_ASIO_OS_DEF(MSG_EOR));
 #endif
 
   /// Socket option to permit sending of broadcast messages.
@@ -107,7 +106,8 @@ public:
   typedef implementation_defined broadcast;
 #else
   typedef boost::asio::detail::socket_option::boolean<
-    SOL_SOCKET, SO_BROADCAST> broadcast;
+    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_BROADCAST)>
+      broadcast;
 #endif
 
   /// Socket option to enable socket-level debugging.
@@ -140,7 +140,7 @@ public:
   typedef implementation_defined debug;
 #else
   typedef boost::asio::detail::socket_option::boolean<
-    SOL_SOCKET, SO_DEBUG> debug;
+    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_DEBUG)> debug;
 #endif
 
   /// Socket option to prevent routing, use local interfaces only.
@@ -173,7 +173,8 @@ public:
   typedef implementation_defined do_not_route;
 #else
   typedef boost::asio::detail::socket_option::boolean<
-    SOL_SOCKET, SO_DONTROUTE> do_not_route;
+    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_DONTROUTE)>
+      do_not_route;
 #endif
 
   /// Socket option to send keep-alives.
@@ -206,7 +207,7 @@ public:
   typedef implementation_defined keep_alive;
 #else
   typedef boost::asio::detail::socket_option::boolean<
-    SOL_SOCKET, SO_KEEPALIVE> keep_alive;
+    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_KEEPALIVE)> keep_alive;
 #endif
 
   /// Socket option for the send buffer size of a socket.
@@ -239,7 +240,8 @@ public:
   typedef implementation_defined send_buffer_size;
 #else
   typedef boost::asio::detail::socket_option::integer<
-    SOL_SOCKET, SO_SNDBUF> send_buffer_size;
+    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_SNDBUF)>
+      send_buffer_size;
 #endif
 
   /// Socket option for the send low watermark.
@@ -272,7 +274,8 @@ public:
   typedef implementation_defined send_low_watermark;
 #else
   typedef boost::asio::detail::socket_option::integer<
-    SOL_SOCKET, SO_SNDLOWAT> send_low_watermark;
+    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_SNDLOWAT)>
+      send_low_watermark;
 #endif
 
   /// Socket option for the receive buffer size of a socket.
@@ -305,7 +308,8 @@ public:
   typedef implementation_defined receive_buffer_size;
 #else
   typedef boost::asio::detail::socket_option::integer<
-    SOL_SOCKET, SO_RCVBUF> receive_buffer_size;
+    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_RCVBUF)>
+      receive_buffer_size;
 #endif
 
   /// Socket option for the receive low watermark.
@@ -338,7 +342,8 @@ public:
   typedef implementation_defined receive_low_watermark;
 #else
   typedef boost::asio::detail::socket_option::integer<
-    SOL_SOCKET, SO_RCVLOWAT> receive_low_watermark;
+    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_RCVLOWAT)>
+      receive_low_watermark;
 #endif
 
   /// Socket option to allow the socket to be bound to an address that is
@@ -372,7 +377,8 @@ public:
   typedef implementation_defined reuse_address;
 #else
   typedef boost::asio::detail::socket_option::boolean<
-    SOL_SOCKET, SO_REUSEADDR> reuse_address;
+    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_REUSEADDR)>
+      reuse_address;
 #endif
 
   /// Socket option to specify whether the socket lingers on close if unsent
@@ -407,7 +413,8 @@ public:
   typedef implementation_defined linger;
 #else
   typedef boost::asio::detail::socket_option::linger<
-    SOL_SOCKET, SO_LINGER> linger;
+    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_LINGER)>
+      linger;
 #endif
 
   /// Socket option to report aborted connections on accept.
@@ -496,7 +503,8 @@ public:
 #if defined(GENERATING_DOCUMENTATION)
   static const int max_connections = implementation_defined;
 #else
-  BOOST_STATIC_CONSTANT(int, max_connections = SOMAXCONN);
+  BOOST_ASIO_STATIC_CONSTANT(int, max_connections
+      = BOOST_ASIO_OS_DEF(SOMAXCONN));
 #endif
 
 protected:
@@ -504,12 +512,6 @@ protected:
   ~socket_base()
   {
   }
-
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
-private:
-  // Workaround to enable the empty base optimisation with Borland C++.
-  char dummy_;
-#endif
 };
 
 } // namespace asio