Protocol factory for UDP over IPv4 and IPv6. More...
#include <udp-factory.hpp>
Classes | |
class | Error |
Public Member Functions | |
UdpFactory (const CtorParams ¶ms) | |
shared_ptr< UdpChannel > | createChannel (const udp::Endpoint &localEndpoint, time::nanoseconds idleTimeout) |
Create UDP-based channel using udp::Endpoint. More... | |
shared_ptr< Face > | createMulticastFace (const shared_ptr< const ndn::net::NetworkInterface > &netif, const boost::asio::ip::address &localAddress, const udp::Endpoint &multicastEndpoint) |
Create a multicast UDP face. More... | |
Public Member Functions inherited from nfd::face::ProtocolFactory | |
ProtocolFactory (const CtorParams ¶ms) | |
virtual | ~ProtocolFactory ()=0 |
const std::set< std::string > & | getProvidedSchemes () const |
Get FaceUri schemes accepted by this protocol factory. More... | |
void | processConfig (OptionalConfigSection configSection, FaceSystem::ConfigContext &context) |
Process face_system subsection that corresponds to this protocol factory id. More... | |
void | createFace (const CreateFaceRequest &req, const FaceCreatedCallback &onCreated, const FaceCreationFailedCallback &onFailure) |
Create a unicast face. More... | |
shared_ptr< Face > | createNetdevBoundFace (const FaceUri &remote, const shared_ptr< const ndn::net::NetworkInterface > &netdev) |
Create a netdev-bound face. More... | |
std::vector< shared_ptr< const Channel > > | getChannels () const |
Get list of open channels (listening + non-listening) More... | |
Static Public Member Functions | |
static const std::string & | getId () noexcept |
Static Public Member Functions inherited from nfd::face::ProtocolFactory | |
template<typename PF > | |
static void | registerType (const std::string &id=PF::getId()) |
Register a protocol factory type. More... | |
static unique_ptr< ProtocolFactory > | create (const std::string &id, const CtorParams ¶ms) |
Create a protocol factory instance. More... | |
static std::set< std::string > | listRegistered () |
Get all registered protocol factory ids. More... | |
static const std::string & | getId () noexcept |
Get id for this protocol factory. More... | |
Additional Inherited Members | |
Public Types inherited from nfd::face::ProtocolFactory | |
using | CtorParams = ProtocolFactoryCtorParams |
Static Protected Member Functions inherited from nfd::face::ProtocolFactory | |
template<typename ChannelMap > | |
static std::vector< shared_ptr< const Channel > > | getChannelsFromMap (const ChannelMap &channelMap) |
Protected Attributes inherited from nfd::face::ProtocolFactory | |
std::set< std::string > | providedSchemes |
FaceUri schemes provided by this protocol factory. More... | |
FaceCreatedCallback | addFace |
callback when a new face is created More... | |
shared_ptr< ndn::net::NetworkMonitor > | netmon |
NetworkMonitor for listing available network interfaces and monitoring their changes. More... | |
Protocol factory for UDP over IPv4 and IPv6.
Definition at line 37 of file udp-factory.hpp.
|
explicit |
Definition at line 50 of file udp-factory.cpp.
References nfd::face::ProtocolFactory::addFace, nfd::ConfigFile::checkRange(), createChannel(), ndn::nfd::FACE_PERSISTENCY_ON_DEMAND, nfd::face::FaceSystem::ConfigContext::generalConfig, ndn::FaceUri::getHost(), ndn::FaceUri::getPort(), nfd::face::FaceSystem::ConfigContext::isDryRun, ndn::nfd::LINK_TYPE_AD_HOC, ndn::nfd::LINK_TYPE_MULTI_ACCESS, nfd::face::ProtocolFactory::CreateFaceRequest::localUri, ndn::MAX_NDN_PACKET_SIZE, nfd::face::MIN_MTU, nfd::face::FaceParams::mtu, NDN_THROW, nfd::face::ProtocolFactory::netmon, NFD_LOG_INFO, NFD_LOG_TRACE, NFD_LOG_WARN, nfd::face::ProtocolFactory::CreateFaceRequest::params, nfd::ConfigFile::parseYesNo(), nfd::face::FaceParams::persistency, nfd::face::ProtocolFactory::providedSchemes, nfd::face::ProtocolFactory::CreateFaceRequest::remoteUri, ndn::to_string(), nfd::face::FaceSystem::GeneralConfig::wantCongestionMarking, and nfd::face::FaceParams::wantLocalFields.
|
staticnoexcept |
Definition at line 44 of file udp-factory.cpp.
shared_ptr< UdpChannel > nfd::face::UdpFactory::createChannel | ( | const udp::Endpoint & | localEndpoint, |
time::nanoseconds | idleTimeout | ||
) |
Create UDP-based channel using udp::Endpoint.
udp::Endpoint is really an alias for boost::asio::ip::udp::endpoint.
If this method is called twice with the same endpoint, only one channel will be created. The second call will just return the existing channel.
If a multicast face is already active on the same local endpoint, the creation fails and an exception is thrown.
UdpFactory::Error |
Definition at line 301 of file udp-factory.cpp.
References nfd::face::ProtocolFactory::getChannelsFromMap(), and NDN_THROW.
Referenced by UdpFactory().
shared_ptr< Face > nfd::face::UdpFactory::createMulticastFace | ( | const shared_ptr< const ndn::net::NetworkInterface > & | netif, |
const boost::asio::ip::address & | localAddress, | ||
const udp::Endpoint & | multicastEndpoint | ||
) |
Create a multicast UDP face.
udp::Endpoint is really an alias for boost::asio::ip::udp::endpoint.
The face will join the specified multicast group.
If this method is called twice with the same set of arguments, only one face will be created. The second call will just return the existing face.
If a UDP channel, unicast face, or multicast face already exists on the same combination of local address and multicast port, the creation fails and an exception is thrown.
netif | the network interface to which the face will be bound |
localAddress | the local IP address to which the face will be bound |
multicastEndpoint | the multicast endpoint (multicast group and port number) |
UdpFactory::Error |
Definition at line 327 of file udp-factory.cpp.
References nfd::face::connectFaceClosedSignal(), nfd::getGlobalIoService(), nonstd::optional_lite::std11::move(), NDN_THROW, nfd::face::MulticastUdpTransport::openRxSocket(), nfd::face::MulticastUdpTransport::openTxSocket(), and websocketpp::transport::asio::socket::error::socket.
Referenced by nfd::face::pickAddress().