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_RAW_PROTOCOL_HPP
0012 #define BOOST_ASIO_GENERIC_RAW_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_raw_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 raw_protocol
0051 {
0052 public:
0053
0054 raw_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 raw_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_RAW);
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 raw_protocol& p1, const raw_protocol& p2)
0096 {
0097 return p1.family_ == p2.family_ && p1.protocol_ == p2.protocol_;
0098 }
0099
0100
0101 friend bool operator!=(const raw_protocol& p1, const raw_protocol& p2)
0102 {
0103 return !(p1 == p2);
0104 }
0105
0106
0107 typedef basic_endpoint<raw_protocol> endpoint;
0108
0109
0110 typedef basic_raw_socket<raw_protocol> socket;
0111
0112 private:
0113 int family_;
0114 int protocol_;
0115 };
0116
0117 }
0118 }
0119 }
0120
0121 #include <boost/asio/detail/pop_options.hpp>
0122
0123 #endif