NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
nfd::face::UdpFactory Class Referencefinal

Protocol factory for UDP over IPv4 and IPv6. More...

#include <udp-factory.hpp>

Inheritance diagram for nfd::face::UdpFactory:
Collaboration diagram for nfd::face::UdpFactory:

Classes

class  Error
 

Public Member Functions

 UdpFactory (const CtorParams &params)
 
shared_ptr< UdpChannelcreateChannel (const udp::Endpoint &localEndpoint, time::nanoseconds idleTimeout)
 Create UDP-based channel using udp::Endpoint. More...
 
shared_ptr< FacecreateMulticastFace (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 &params)
 
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< FacecreateNetdevBoundFace (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< ProtocolFactorycreate (const std::string &id, const CtorParams &params)
 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::NetworkMonitornetmon
 NetworkMonitor for listing available network interfaces and monitoring their changes. More...
 

Detailed Description

Protocol factory for UDP over IPv4 and IPv6.

Definition at line 37 of file udp-factory.hpp.

Constructor & Destructor Documentation

◆ UdpFactory()

Member Function Documentation

◆ getId()

const std::string & nfd::face::UdpFactory::getId ( )
staticnoexcept

Definition at line 44 of file udp-factory.cpp.

◆ createChannel()

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.

Returns
always a valid pointer to a UdpChannel object, an exception is thrown if it cannot be created.
Exceptions
UdpFactory::Error

Definition at line 301 of file udp-factory.cpp.

References nfd::face::ProtocolFactory::getChannelsFromMap(), and NDN_THROW.

Referenced by UdpFactory().

◆ createMulticastFace()

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.

Parameters
netifthe network interface to which the face will be bound
localAddressthe local IP address to which the face will be bound
multicastEndpointthe multicast endpoint (multicast group and port number)
Returns
always a valid shared pointer to the created face; an exception is thrown if the face cannot be created.
Exceptions
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().


The documentation for this class was generated from the following files: