本文整理汇总了C++中From::protocol方法的典型用法代码示例。如果您正苦于以下问题:C++ From::protocol方法的具体用法?C++ From::protocol怎么用?C++ From::protocol使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类From
的用法示例。
在下文中一共展示了From::protocol方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: cast
static inline
asio::ip::tcp::endpoint
cast(const From& endpoint) {
switch (endpoint.protocol().family()) {
case AF_INET: {
const sockaddr_in* addr = reinterpret_cast<const sockaddr_in*>(endpoint.data());
asio::ip::address_v4::bytes_type array;
std::copy((char*)&addr->sin_addr, (char*)&addr->sin_addr + array.size(), array.begin());
asio::ip::address_v4 address(array);
return asio::ip::tcp::endpoint(
address,
asio::detail::socket_ops::network_to_host_short(addr->sin_port)
);
}
case AF_INET6: {
const sockaddr_in6* addrv6 = reinterpret_cast<const sockaddr_in6*>(endpoint.data());
asio::ip::address_v6::bytes_type array;
std::copy((char*)&addrv6->sin6_addr, (char*)&addrv6->sin6_addr + array.size(), array.begin());
asio::ip::address_v6 address(array, addrv6->sin6_scope_id);
return asio::ip::tcp::endpoint(
address,
asio::detail::socket_ops::network_to_host_short(addrv6->sin6_port)
);
}
default:
BOOST_ASSERT(false);
};
return asio::ip::tcp::endpoint();
}
示例2: string
static inline
std::string
cast(const From& endpoint) {
// TODO: Это пиздец.
switch (endpoint.protocol().family()) {
case AF_INET:
case AF_INET6:
return boost::lexical_cast<std::string>(endpoint_traits<asio::ip::tcp::endpoint>::cast(endpoint));
case AF_UNIX: {
const sockaddr_un* addr = (const sockaddr_un*)(endpoint.data());
return std::string(addr->sun_path);
}
default:
break;
};
return "<unknown protocol type>";
}