File indexing completed on 2025-01-18 09:28:53
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef BOOST_ASIO_GENERIC_DATAGRAM_PROTOCOL_HPP
0012 #define BOOST_ASIO_GENERIC_DATAGRAM_PROTOCOL_HPP
0013
0014 #if defined(_MSC_VER) && (_MSC_VER >= 1200)
0015 # pragma once
0016 #endif
0017
0018 #include <boost/asio/detail/config.hpp>
0019
0020 #include <typeinfo>
0021 #include <boost/asio/basic_datagram_socket.hpp>
0022 #include <boost/asio/detail/socket_types.hpp>
0023 #include <boost/asio/detail/throw_exception.hpp>
0024 #include <boost/asio/generic/basic_endpoint.hpp>
0025
0026 #include <boost/asio/detail/push_options.hpp>
0027
0028 namespace boost {
0029 namespace asio {
0030 namespace generic {
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050 class datagram_protocol
0051 {
0052 public:
0053
0054 datagram_protocol(int address_family, int socket_protocol)
0055 : family_(address_family),
0056 protocol_(socket_protocol)
0057 {
0058 }
0059
0060
0061
0062
0063
0064 template <typename Protocol>
0065 datagram_protocol(const Protocol& source_protocol)
0066 : family_(source_protocol.family()),
0067 protocol_(source_protocol.protocol())
0068 {
0069 if (source_protocol.type() != type())
0070 {
0071 std::bad_cast ex;
0072 boost::asio::detail::throw_exception(ex);
0073 }
0074 }
0075
0076
0077 int type() const noexcept
0078 {
0079 return BOOST_ASIO_OS_DEF(SOCK_DGRAM);
0080 }
0081
0082
0083 int protocol() const noexcept
0084 {
0085 return protocol_;
0086 }
0087
0088
0089 int family() const noexcept
0090 {
0091 return family_;
0092 }
0093
0094
0095 friend bool operator==(const datagram_protocol& p1,
0096 const datagram_protocol& p2)
0097 {
0098 return p1.family_ == p2.family_ && p1.protocol_ == p2.protocol_;
0099 }
0100
0101
0102 friend bool operator!=(const datagram_protocol& p1,
0103 const datagram_protocol& p2)
0104 {
0105 return !(p1 == p2);
0106 }
0107
0108
0109 typedef basic_endpoint<datagram_protocol> endpoint;
0110
0111
0112 typedef basic_datagram_socket<datagram_protocol> socket;
0113
0114 private:
0115 int family_;
0116 int protocol_;
0117 };
0118
0119 }
0120 }
0121 }
0122
0123 #include <boost/asio/detail/pop_options.hpp>
0124
0125 #endif