Remove address_cast.
This commit is contained in:
parent
15803ab00b
commit
c406fa7ce7
@ -90,13 +90,11 @@ public:
|
|||||||
return type_ == ipv6;
|
return type_ == ipv6;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(ASIO_NO_DEPRECATED)
|
|
||||||
/// Get the address as an IP version 4 address.
|
/// Get the address as an IP version 4 address.
|
||||||
ASIO_DECL asio::ip::address_v4 to_v4() const;
|
ASIO_DECL asio::ip::address_v4 to_v4() const;
|
||||||
|
|
||||||
/// Get the address as an IP version 6 address.
|
/// Get the address as an IP version 6 address.
|
||||||
ASIO_DECL asio::ip::address_v6 to_v6() const;
|
ASIO_DECL asio::ip::address_v6 to_v6() const;
|
||||||
#endif // !defined(ASIO_NO_DEPRECATED)
|
|
||||||
|
|
||||||
/// Get the address as a string in dotted decimal format.
|
/// Get the address as a string in dotted decimal format.
|
||||||
ASIO_DECL std::string to_string() const;
|
ASIO_DECL std::string to_string() const;
|
||||||
@ -167,18 +165,6 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Helper function to get the underlying IPv4 address.
|
|
||||||
friend asio::ip::address_v4 get_v4_helper(const address& a)
|
|
||||||
{
|
|
||||||
return a.ipv4_address_;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Helper function to get the underlying IPv4 address.
|
|
||||||
friend asio::ip::address_v6 get_v6_helper(const address& a)
|
|
||||||
{
|
|
||||||
return a.ipv6_address_;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The type of the address.
|
// The type of the address.
|
||||||
enum { ipv4, ipv6 } type_;
|
enum { ipv4, ipv6 } type_;
|
||||||
|
|
||||||
@ -219,99 +205,6 @@ ASIO_DECL address make_address(const std::string& str);
|
|||||||
ASIO_DECL address make_address(
|
ASIO_DECL address make_address(
|
||||||
const std::string& str, asio::error_code& ec);
|
const std::string& str, asio::error_code& ec);
|
||||||
|
|
||||||
/** @defgroup address_cast asio::ip::address_cast
|
|
||||||
*
|
|
||||||
* @brief The asio::ip::address_cast function is used to convert between
|
|
||||||
* address types.
|
|
||||||
*/
|
|
||||||
/*@{*/
|
|
||||||
|
|
||||||
/// Cast a version-independent address to itself.
|
|
||||||
template <typename T>
|
|
||||||
inline T address_cast(const address& addr,
|
|
||||||
typename enable_if<is_same<T, address>::value>::type* = 0)
|
|
||||||
{
|
|
||||||
return addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Cast a version-independent address to an IPv4 address.
|
|
||||||
/**
|
|
||||||
* @throws bad_address_cast if @c a does not represent an IPv4 address.
|
|
||||||
*/
|
|
||||||
template <typename T>
|
|
||||||
inline T address_cast(const address& addr,
|
|
||||||
typename enable_if<is_same<T, address_v4>::value>::type* = 0)
|
|
||||||
{
|
|
||||||
if (!addr.is_v4())
|
|
||||||
{
|
|
||||||
bad_address_cast ex;
|
|
||||||
asio::detail::throw_exception(ex);
|
|
||||||
}
|
|
||||||
return get_v4_helper(addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Cast a version-independent address to an IPv6 address.
|
|
||||||
/**
|
|
||||||
* @throws bad_address_cast if @c a does not represent an IPv6 address.
|
|
||||||
*/
|
|
||||||
template <typename T>
|
|
||||||
inline T address_cast(const address& addr,
|
|
||||||
typename enable_if<is_same<T, address_v6>::value>::type* = 0)
|
|
||||||
{
|
|
||||||
if (!addr.is_v6())
|
|
||||||
{
|
|
||||||
bad_address_cast ex;
|
|
||||||
asio::detail::throw_exception(ex);
|
|
||||||
}
|
|
||||||
return get_v6_helper(addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Cast an IPv4 address to a version-independent address.
|
|
||||||
template <typename T>
|
|
||||||
inline T address_cast(const address_v4& addr,
|
|
||||||
typename enable_if<is_same<T, address>::value>::type* = 0)
|
|
||||||
{
|
|
||||||
return address(addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Cast an IPv4 address to itself.
|
|
||||||
template <typename T>
|
|
||||||
inline T address_cast(const address_v4& addr,
|
|
||||||
typename enable_if<is_same<T, address_v4>::value>::type* = 0)
|
|
||||||
{
|
|
||||||
return addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Cast from IPv4 to IPV6 address is not permitted.
|
|
||||||
template <typename T>
|
|
||||||
bad_address_cast address_cast(const address_v4&,
|
|
||||||
typename enable_if<is_same<T, address_v6>::value>::type* = 0)
|
|
||||||
ASIO_DELETED;
|
|
||||||
|
|
||||||
/// Cast an IPv6 address to a version-independent address.
|
|
||||||
template <typename T>
|
|
||||||
inline T address_cast(const address_v6& addr,
|
|
||||||
typename enable_if<is_same<T, address>::value>::type* = 0)
|
|
||||||
{
|
|
||||||
return address(addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Cast an IPv6 address to itself.
|
|
||||||
template <typename T>
|
|
||||||
inline T address_cast(const address_v6& addr,
|
|
||||||
typename enable_if<is_same<T, address_v6>::value>::type* = 0)
|
|
||||||
{
|
|
||||||
return addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Cast from IPv6 to IPv4 address is not permitted.
|
|
||||||
template <typename T>
|
|
||||||
bad_address_cast address_cast(const address_v6&,
|
|
||||||
typename enable_if<is_same<T, address_v4>::value>::type* = 0)
|
|
||||||
ASIO_DELETED;
|
|
||||||
|
|
||||||
/*@}*/
|
|
||||||
|
|
||||||
#if !defined(ASIO_NO_IOSTREAM)
|
#if !defined(ASIO_NO_IOSTREAM)
|
||||||
|
|
||||||
/// Output an address as a string.
|
/// Output an address as a string.
|
||||||
|
@ -80,8 +80,7 @@ endpoint::endpoint(const asio::ip::address& addr,
|
|||||||
asio::detail::socket_ops::host_to_network_short(port_num);
|
asio::detail::socket_ops::host_to_network_short(port_num);
|
||||||
data_.v4.sin_addr.s_addr =
|
data_.v4.sin_addr.s_addr =
|
||||||
asio::detail::socket_ops::host_to_network_long(
|
asio::detail::socket_ops::host_to_network_long(
|
||||||
static_cast<asio::detail::u_long_type>(
|
addr.to_v4().to_ulong());
|
||||||
address_cast<address_v4>(addr).to_ulong()));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -89,7 +88,7 @@ endpoint::endpoint(const asio::ip::address& addr,
|
|||||||
data_.v6.sin6_port =
|
data_.v6.sin6_port =
|
||||||
asio::detail::socket_ops::host_to_network_short(port_num);
|
asio::detail::socket_ops::host_to_network_short(port_num);
|
||||||
data_.v6.sin6_flowinfo = 0;
|
data_.v6.sin6_flowinfo = 0;
|
||||||
asio::ip::address_v6 v6_addr = address_cast<address_v6>(addr);
|
asio::ip::address_v6 v6_addr = addr.to_v6();
|
||||||
asio::ip::address_v6::bytes_type bytes = v6_addr.to_bytes();
|
asio::ip::address_v6::bytes_type bytes = v6_addr.to_bytes();
|
||||||
memcpy(data_.v6.sin6_addr.s6_addr, bytes.data(), 16);
|
memcpy(data_.v6.sin6_addr.s6_addr, bytes.data(), 16);
|
||||||
data_.v6.sin6_scope_id =
|
data_.v6.sin6_scope_id =
|
||||||
|
@ -398,7 +398,7 @@ public:
|
|||||||
if (multicast_address.is_v6())
|
if (multicast_address.is_v6())
|
||||||
{
|
{
|
||||||
using namespace std; // For memcpy.
|
using namespace std; // For memcpy.
|
||||||
address_v6 ipv6_address = address_cast<address_v6>(multicast_address);
|
address_v6 ipv6_address = multicast_address.to_v6();
|
||||||
address_v6::bytes_type bytes = ipv6_address.to_bytes();
|
address_v6::bytes_type bytes = ipv6_address.to_bytes();
|
||||||
memcpy(ipv6_value_.ipv6mr_multiaddr.s6_addr, bytes.data(), 16);
|
memcpy(ipv6_value_.ipv6mr_multiaddr.s6_addr, bytes.data(), 16);
|
||||||
ipv6_value_.ipv6mr_interface = ipv6_address.scope_id();
|
ipv6_value_.ipv6mr_interface = ipv6_address.scope_id();
|
||||||
@ -407,7 +407,7 @@ public:
|
|||||||
{
|
{
|
||||||
ipv4_value_.imr_multiaddr.s_addr =
|
ipv4_value_.imr_multiaddr.s_addr =
|
||||||
asio::detail::socket_ops::host_to_network_long(
|
asio::detail::socket_ops::host_to_network_long(
|
||||||
address_cast<address_v4>(multicast_address).to_ulong());
|
multicast_address.to_v4().to_ulong());
|
||||||
ipv4_value_.imr_interface.s_addr =
|
ipv4_value_.imr_interface.s_addr =
|
||||||
asio::detail::socket_ops::host_to_network_long(
|
asio::detail::socket_ops::host_to_network_long(
|
||||||
address_v4::any().to_ulong());
|
address_v4::any().to_ulong());
|
||||||
|
@ -134,7 +134,6 @@ address make_address(const std::string& str,
|
|||||||
return make_address(str.c_str(), ec);
|
return make_address(str.c_str(), ec);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(ASIO_NO_DEPRECATED)
|
|
||||||
asio::ip::address_v4 address::to_v4() const
|
asio::ip::address_v4 address::to_v4() const
|
||||||
{
|
{
|
||||||
if (type_ != ipv4)
|
if (type_ != ipv4)
|
||||||
@ -154,7 +153,6 @@ asio::ip::address_v6 address::to_v6() const
|
|||||||
}
|
}
|
||||||
return ipv6_address_;
|
return ipv6_address_;
|
||||||
}
|
}
|
||||||
#endif // !defined(ASIO_NO_DEPRECATED)
|
|
||||||
|
|
||||||
std::string address::to_string() const
|
std::string address::to_string() const
|
||||||
{
|
{
|
||||||
|
@ -78,8 +78,7 @@ bool rfc2818_verification::operator()(
|
|||||||
{
|
{
|
||||||
if (address.is_v4() && ip_address->length == 4)
|
if (address.is_v4() && ip_address->length == 4)
|
||||||
{
|
{
|
||||||
ip::address_v4::bytes_type bytes =
|
ip::address_v4::bytes_type bytes = address.to_v4().to_bytes();
|
||||||
ip::address_cast<ip::address_v4>(address).to_bytes();
|
|
||||||
if (memcmp(bytes.data(), ip_address->data, 4) == 0)
|
if (memcmp(bytes.data(), ip_address->data, 4) == 0)
|
||||||
{
|
{
|
||||||
GENERAL_NAMES_free(gens);
|
GENERAL_NAMES_free(gens);
|
||||||
@ -88,8 +87,7 @@ bool rfc2818_verification::operator()(
|
|||||||
}
|
}
|
||||||
else if (address.is_v6() && ip_address->length == 16)
|
else if (address.is_v6() && ip_address->length == 16)
|
||||||
{
|
{
|
||||||
ip::address_v6::bytes_type bytes =
|
ip::address_v6::bytes_type bytes = address.to_v6().to_bytes();
|
||||||
ip::address_cast<ip::address_v6>(address).to_bytes();
|
|
||||||
if (memcmp(bytes.data(), ip_address->data, 16) == 0)
|
if (memcmp(bytes.data(), ip_address->data, 16) == 0)
|
||||||
{
|
{
|
||||||
GENERAL_NAMES_free(gens);
|
GENERAL_NAMES_free(gens);
|
||||||
|
@ -48,8 +48,7 @@ public:
|
|||||||
port_low_byte_ = port & 0xff;
|
port_low_byte_ = port & 0xff;
|
||||||
|
|
||||||
// Save IP address in network byte order.
|
// Save IP address in network byte order.
|
||||||
address_ = asio::ip::address_cast<asio::ip::address_v4>(
|
address_ = endpoint.address().to_v4().to_bytes();
|
||||||
endpoint.address()).to_bytes();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::array<asio::const_buffer, 7> buffers() const
|
boost::array<asio::const_buffer, 7> buffers() const
|
||||||
|
@ -105,13 +105,6 @@ void test()
|
|||||||
addr1 = ip::make_address(string_value);
|
addr1 = ip::make_address(string_value);
|
||||||
addr1 = ip::make_address(string_value, ec);
|
addr1 = ip::make_address(string_value, ec);
|
||||||
|
|
||||||
// address casts.
|
|
||||||
|
|
||||||
addr_v4_value = ip::address_cast<ip::address_v4>(addr1);
|
|
||||||
addr1 = ip::address_cast<ip::address>(addr_v4_value);
|
|
||||||
addr_v6_value = ip::address_cast<ip::address_v6>(addr1);
|
|
||||||
addr1 = ip::address_cast<ip::address>(addr_v6_value);
|
|
||||||
|
|
||||||
// address I/O.
|
// address I/O.
|
||||||
|
|
||||||
std::ostringstream os;
|
std::ostringstream os;
|
||||||
|
Loading…
Reference in New Issue
Block a user