protocol factory for UDP over IPv4 and IPv6 More...
#include <daemon/face/udp-factory.hpp>
Classes | |
class | Error |
Exception of UdpFactory. More... | |
Public Types | |
using | CtorParams = ProtocolFactoryCtorParams |
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... | |
void | createFace (const CreateFaceRequest &req, const FaceCreatedCallback &onCreated, const FaceCreationFailedCallback &onFailure) override |
Try to create a unicast face using the supplied parameters. 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... | |
std::vector< shared_ptr< const Channel > > | getChannels () const override |
const std::set< std::string > & | getProvidedSchemes () |
Get FaceUri schemes accepted by this ProtocolFactory. More... | |
void | processConfig (OptionalConfigSection configSection, FaceSystem::ConfigContext &context) override |
process face_system.udp config section More... | |
Static Public Member Functions | |
static unique_ptr< ProtocolFactory > | create (const std::string &id, const CtorParams ¶ms) |
Create a protocol factory instance. More... | |
static const std::string & | getId () |
static std::set< std::string > | listRegistered () |
Get registered protocol factory ids. More... | |
template<typename PF > | |
static void | registerType (const std::string &id=PF::getId()) |
Register a protocol factory type. More... | |
Static Protected Member Functions | |
template<typename ChannelMap > | |
static std::vector< shared_ptr< const Channel > > | getChannelsFromMap (const ChannelMap &channelMap) |
Protected Attributes | |
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... | |
std::set< std::string > | providedSchemes |
FaceUri schemes provided by this ProtocolFactory. 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.
|
inherited |
Definition at line 62 of file protocol-factory.hpp.
|
explicit |
Definition at line 51 of file udp-factory.cpp.
|
staticinherited |
Create a protocol factory instance.
nullptr | if factory with id is not registered |
Definition at line 41 of file protocol-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 286 of file udp-factory.cpp.
|
overridevirtual |
Try to create a unicast face using the supplied parameters.
req | request object containing the face creation parameters |
onCreated | callback if face creation succeeds or face already exists; the settings of an existing face are not updated if they differ from the request |
onFailure | callback if face creation fails |
Implements nfd::face::ProtocolFactory.
Definition at line 238 of file udp-factory.cpp.
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 313 of file udp-factory.cpp.
|
overridevirtual |
Implements nfd::face::ProtocolFactory.
Definition at line 307 of file udp-factory.cpp.
|
inlinestaticprotectedinherited |
Definition at line 165 of file protocol-factory.hpp.
|
static |
Definition at line 45 of file udp-factory.cpp.
|
inlineinherited |
Get FaceUri schemes accepted by this ProtocolFactory.
Definition at line 127 of file protocol-factory.hpp.
|
staticinherited |
Get registered protocol factory ids.
Definition at line 53 of file protocol-factory.cpp.
|
overridevirtual |
process face_system.udp config section
Implements nfd::face::ProtocolFactory.
Definition at line 58 of file udp-factory.cpp.
|
inlinestaticinherited |
Register a protocol factory type.
S | subclass of ProtocolFactory |
id | factory identifier |
Definition at line 70 of file protocol-factory.hpp.
|
protectedinherited |
callback when a new face is created
Definition at line 181 of file protocol-factory.hpp.
|
protectedinherited |
NetworkMonitor for listing available network interfaces and monitoring their changes.
ProtocolFactory subclass should check the NetworkMonitor has sufficient capabilities prior to usage.
Definition at line 188 of file protocol-factory.hpp.
|
protectedinherited |
FaceUri schemes provided by this ProtocolFactory.
Definition at line 180 of file protocol-factory.hpp.