Chris@16: // Chris@16: // ip/udp.hpp Chris@16: // ~~~~~~~~~~ Chris@16: // Chris@101: // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com) Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: // Chris@16: Chris@16: #ifndef BOOST_ASIO_IP_UDP_HPP Chris@16: #define BOOST_ASIO_IP_UDP_HPP Chris@16: Chris@16: #if defined(_MSC_VER) && (_MSC_VER >= 1200) Chris@16: # pragma once Chris@16: #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: #include Chris@16: Chris@16: namespace boost { Chris@16: namespace asio { Chris@16: namespace ip { Chris@16: Chris@16: /// Encapsulates the flags needed for UDP. Chris@16: /** Chris@16: * The boost::asio::ip::udp class contains flags necessary for UDP sockets. Chris@16: * Chris@16: * @par Thread Safety Chris@16: * @e Distinct @e objects: Safe.@n Chris@16: * @e Shared @e objects: Safe. Chris@16: * Chris@16: * @par Concepts: Chris@16: * Protocol, InternetProtocol. Chris@16: */ Chris@16: class udp Chris@16: { Chris@16: public: Chris@16: /// The type of a UDP endpoint. Chris@16: typedef basic_endpoint endpoint; Chris@16: Chris@16: /// Construct to represent the IPv4 UDP protocol. Chris@16: static udp v4() Chris@16: { Chris@16: return udp(BOOST_ASIO_OS_DEF(AF_INET)); Chris@16: } Chris@16: Chris@16: /// Construct to represent the IPv6 UDP protocol. Chris@16: static udp v6() Chris@16: { Chris@16: return udp(BOOST_ASIO_OS_DEF(AF_INET6)); Chris@16: } Chris@16: Chris@16: /// Obtain an identifier for the type of the protocol. Chris@16: int type() const Chris@16: { Chris@16: return BOOST_ASIO_OS_DEF(SOCK_DGRAM); Chris@16: } Chris@16: Chris@16: /// Obtain an identifier for the protocol. Chris@16: int protocol() const Chris@16: { Chris@16: return BOOST_ASIO_OS_DEF(IPPROTO_UDP); Chris@16: } Chris@16: Chris@16: /// Obtain an identifier for the protocol family. Chris@16: int family() const Chris@16: { Chris@16: return family_; Chris@16: } Chris@16: Chris@16: /// The UDP socket type. Chris@16: typedef basic_datagram_socket socket; Chris@16: Chris@16: /// The UDP resolver type. Chris@16: typedef basic_resolver resolver; Chris@16: Chris@16: /// Compare two protocols for equality. Chris@16: friend bool operator==(const udp& p1, const udp& p2) Chris@16: { Chris@16: return p1.family_ == p2.family_; Chris@16: } Chris@16: Chris@16: /// Compare two protocols for inequality. Chris@16: friend bool operator!=(const udp& p1, const udp& p2) Chris@16: { Chris@16: return p1.family_ != p2.family_; Chris@16: } Chris@16: Chris@16: private: Chris@16: // Construct with a specific family. Chris@16: explicit udp(int protocol_family) Chris@16: : family_(protocol_family) Chris@16: { Chris@16: } Chris@16: Chris@16: int family_; Chris@16: }; Chris@16: Chris@16: } // namespace ip Chris@16: } // namespace asio Chris@16: } // namespace boost Chris@16: Chris@16: #include Chris@16: Chris@16: #endif // BOOST_ASIO_IP_UDP_HPP