本文整理汇总了C++中Endpoint::impl方法的典型用法代码示例。如果您正苦于以下问题:C++ Endpoint::impl方法的具体用法?C++ Endpoint::impl怎么用?C++ Endpoint::impl使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Endpoint
的用法示例。
在下文中一共展示了Endpoint::impl方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: remoteEndpoint
void TcpSocketImpl::remoteEndpoint(Endpoint& ep) const
{
struct sockaddr_storage addr;
socklen_t slen = sizeof(addr);
int ret = ::getpeername(fd(), reinterpret_cast<struct sockaddr*>(&addr), &slen);
if(ret == 0)
ep.impl()->init( (sockaddr*)&addr, slen );
else
ep.clear();
}
示例2: resolve
void AddrInfo::resolve(const Endpoint& ep, bool passive)
{
clear();
const EndpointImpl* impl = ep.impl();
const std::size_t addrlen = impl->addrlen();
if(addrlen > 0)
{
const sockaddr* addr = impl->addr();
std::memcpy(&_addr, addr, addrlen);
_special.ai_family = _addr.ss_family;
_special.ai_addr = reinterpret_cast<sockaddr*>(&_addr);
_special.ai_addrlen = addrlen;
_special.ai_next = 0;
_ai = &_special;
return;
}
struct addrinfo hints;
std::memset(&hints, 0, sizeof(hints));
// ai_socktype set to 0 does not work for QNX NTO
hints.ai_socktype = SOCK_STREAM;
if( passive )
hints.ai_flags |= AI_PASSIVE;
_host = impl->host();
_service = impl->service();
int error = ::getaddrinfo(_host.c_str(), _service.c_str(), &hints, &_gainfo);
if(error)
{
log_error( "getaddrinfo: " << gai_strerror(error) );
throw System::AccessFailed(_host + ':' + _service);
}
_ai = _gainfo;
}