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_SEQ_PACKET_PROTOCOL_HPP
0012 #define BOOST_ASIO_GENERIC_SEQ_PACKET_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_seq_packet_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 class seq_packet_protocol
0049 {
0050 public:
0051
0052 seq_packet_protocol(int address_family, int socket_protocol)
0053 : family_(address_family),
0054 protocol_(socket_protocol)
0055 {
0056 }
0057
0058
0059
0060
0061
0062
0063 template <typename Protocol>
0064 seq_packet_protocol(const Protocol& source_protocol)
0065 : family_(source_protocol.family()),
0066 protocol_(source_protocol.protocol())
0067 {
0068 if (source_protocol.type() != type())
0069 {
0070 std::bad_cast ex;
0071 boost::asio::detail::throw_exception(ex);
0072 }
0073 }
0074
0075
0076 int type() const noexcept
0077 {
0078 return BOOST_ASIO_OS_DEF(SOCK_SEQPACKET);
0079 }
0080
0081
0082 int protocol() const noexcept
0083 {
0084 return protocol_;
0085 }
0086
0087
0088 int family() const noexcept
0089 {
0090 return family_;
0091 }
0092
0093
0094 friend bool operator==(const seq_packet_protocol& p1,
0095 const seq_packet_protocol& p2)
0096 {
0097 return p1.family_ == p2.family_ && p1.protocol_ == p2.protocol_;
0098 }
0099
0100
0101 friend bool operator!=(const seq_packet_protocol& p1,
0102 const seq_packet_protocol& p2)
0103 {
0104 return !(p1 == p2);
0105 }
0106
0107
0108 typedef basic_endpoint<seq_packet_protocol> endpoint;
0109
0110
0111 typedef basic_seq_packet_socket<seq_packet_protocol> socket;
0112
0113 private:
0114 int family_;
0115 int protocol_;
0116 };
0117
0118 }
0119 }
0120 }
0121
0122 #include <boost/asio/detail/pop_options.hpp>
0123
0124 #endif