protocol factory for UDP over IPv4 and IPv6 More...
#include <udp-factory.hpp>
Classes | |
class | Error |
Exception of UdpFactory. More... | |
Public Member Functions | |
UdpFactory (const CtorParams ¶ms) | |
void | processConfig (OptionalConfigSection configSection, FaceSystem::ConfigContext &context) override |
process face_system.udp config section More... | |
void | createFace (const CreateFaceParams ¶ms, const FaceCreatedCallback &onCreated, const FaceCreationFailedCallback &onFailure) override |
Try to create face using the supplied parameters. More... | |
shared_ptr< UdpChannel > | createChannel (const udp::Endpoint &localEndpoint, time::nanoseconds idleTimeout) |
Create UDP-based channel using udp::Endpoint. More... | |
std::vector< shared_ptr< const Channel > > | getChannels () const override |
shared_ptr< Face > | createMulticastFace (const udp::Endpoint &localEndpoint, const udp::Endpoint &multicastEndpoint, const std::string &networkInterfaceName="") |
Create multicast UDP face using udp::Endpoint. More... | |
shared_ptr< Face > | createMulticastFace (const std::string &localIp, const std::string &multicastIp, const std::string &multicastPort, const std::string &networkInterfaceName="") |
Public Member Functions inherited from nfd::face::ProtocolFactory | |
virtual | ~ProtocolFactory ()=default |
const std::set< std::string > & | getProvidedSchemes () |
Get FaceUri schemes accepted by this ProtocolFactory. More... | |
Static Public Member Functions | |
static const std::string & | getId () |
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 registered protocol factory ids. More... | |
static const std::string & | getId () |
Get id for this ProtocolFactory. More... | |
Additional Inherited Members | |
Public Types inherited from nfd::face::ProtocolFactory | |
using | CtorParams = ProtocolFactoryCtorParams |
Protected Member Functions inherited from nfd::face::ProtocolFactory | |
ProtocolFactory (const CtorParams ¶ms) | |
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 ProtocolFactory. 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
UDP unicast is available over both IPv4 and IPv6. UDP multicast is available over IPv4 only.
Definition at line 40 of file udp-factory.hpp.
|
explicit |
Definition at line 56 of file udp-factory.cpp.
References nfd::face::ProtocolFactory::netmon.
Referenced by nfd::face::UdpFactory::Error::Error().
|
static |
Definition at line 50 of file udp-factory.cpp.
Referenced by nfd::face::UdpFactory::Error::Error().
|
overridevirtual |
process face_system.udp config section
Implements nfd::face::ProtocolFactory.
Definition at line 63 of file udp-factory.cpp.
References nfd::face::ProtocolFactory::addFace, createChannel(), nfd::face::FaceSystem::ConfigContext::isDryRun, ndn::nfd::LINK_TYPE_AD_HOC, ndn::nfd::LINK_TYPE_MULTI_ACCESS, NFD_LOG_INFO, NFD_LOG_WARN, nfd::ConfigFile::parseYesNo(), and nfd::face::ProtocolFactory::providedSchemes.
Referenced by nfd::face::UdpFactory::Error::Error().
|
overridevirtual |
Try to create face using the supplied parameters.
params | parameters to create face with |
onCreated | callback if face creation succeeds or face already exists; persistency and local fields settings are not updated on an existing face |
onFailure | callback if face creation fails |
Implements nfd::face::ProtocolFactory.
Definition at line 214 of file udp-factory.cpp.
References ndn::ip::addressFromString(), ndn::nfd::FACE_PERSISTENCY_ON_DEMAND, ndn::FaceUri::getHost(), ndn::FaceUri::getPort(), ndn::FaceUri::isCanonical(), nfd::face::ProtocolFactory::CreateFaceParams::localUri, NFD_LOG_TRACE, nfd::face::ProtocolFactory::CreateFaceParams::persistency, nfd::face::ProtocolFactory::CreateFaceParams::remoteUri, nfd::face::ProtocolFactory::CreateFaceParams::wantLocalFields, and nfd::face::ProtocolFactory::CreateFaceParams::wantLpReliability.
Referenced by nfd::face::UdpFactory::Error::Error().
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 263 of file udp-factory.cpp.
Referenced by nfd::face::UdpFactory::Error::Error(), and processConfig().
|
overridevirtual |
Implements nfd::face::ProtocolFactory.
Definition at line 288 of file udp-factory.cpp.
References nfd::face::ProtocolFactory::getChannelsFromMap().
Referenced by nfd::face::UdpFactory::Error::Error().
shared_ptr< Face > nfd::face::UdpFactory::createMulticastFace | ( | const udp::Endpoint & | localEndpoint, |
const udp::Endpoint & | multicastEndpoint, | ||
const std::string & | networkInterfaceName = "" |
||
) |
Create multicast UDP face using udp::Endpoint.
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 pair of endpoints, only one face will be created. The second call will just return the existing face.
If an unicast face is already active on the same local NIC and port, the creation fails and an exception is thrown.
localEndpoint | local endpoint |
multicastEndpoint | multicast endpoint |
networkInterfaceName | name of the network interface on which the face will be bound (Used only on multihomed linux machine with more than one multicast UDP face for the same multicast group. If specified, will require CAP_NET_RAW capability) An empty string can be provided in other system or in linux machine with only one multicast UDP face per multicast group |
UdpFactory::Error |
Definition at line 294 of file udp-factory.cpp.
References nfd::face::connectFaceClosedSignal(), nfd::getGlobalIoService(), and websocketpp::transport::asio::socket::error::socket.
Referenced by createMulticastFace(), nfd::face::UdpFactory::Error::Error(), and nfd::face::getV4Address().
shared_ptr< Face > nfd::face::UdpFactory::createMulticastFace | ( | const std::string & | localIp, |
const std::string & | multicastIp, | ||
const std::string & | multicastPort, | ||
const std::string & | networkInterfaceName = "" |
||
) |
Definition at line 378 of file udp-factory.cpp.
References ndn::ip::addressFromString(), and createMulticastFace().