virtual bool isCanonical(const FaceUri& faceUri) const { if (!faceUri.getPort().empty()) { return false; } if (!faceUri.getPath().empty()) { return false; } ethernet::Address addr = ethernet::Address::fromString(faceUri.getHost()); return addr.toString() == faceUri.getHost(); }
void TcpFactory::createFace(const FaceUri& uri, const FaceCreatedCallback& onCreated, const FaceConnectFailedCallback& onConnectFailed) { resolver::AddressSelector addressSelector = resolver::AnyAddress(); if (uri.getScheme() == "tcp4") addressSelector = resolver::Ipv4Address(); else if (uri.getScheme() == "tcp6") addressSelector = resolver::Ipv6Address(); if (!uri.getPath().empty() && uri.getPath() != "/") { onConnectFailed("Invalid URI"); } TcpResolver::asyncResolve(uri.getHost(), uri.getPort().empty() ? m_defaultPort : uri.getPort(), bind(&TcpFactory::continueCreateFaceAfterResolve, this, _1, onCreated, onConnectFailed), onConnectFailed, addressSelector); }
virtual bool isCanonical(const FaceUri& faceUri) const { if (faceUri.getPort().empty()) { return false; } if (!faceUri.getPath().empty()) { return false; } boost::system::error_code ec; boost::asio::ip::address addr; if (faceUri.getScheme() == m_v4Scheme) { addr = boost::asio::ip::address_v4::from_string(faceUri.getHost(), ec); } else if (faceUri.getScheme() == m_v6Scheme) { addr = boost::asio::ip::address_v6::from_string(faceUri.getHost(), ec); } else { return false; } return !static_cast<bool>(ec) && addr.to_string() == faceUri.getHost() && this->checkAddress(addr).first; }