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

Provides support for an underlying protocol. More...

#include <protocol-factory.hpp>

Inheritance diagram for nfd::face::ProtocolFactory:
Collaboration diagram for nfd::face::ProtocolFactory:

Classes

struct  CreateFaceRequest
 Encapsulates a face creation request and all its parameters. More...
 
class  Error
 Base class for all exceptions thrown by ProtocolFactory subclasses. More...
 

Public Types

using CtorParams = ProtocolFactoryCtorParams
 

Public Member Functions

 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

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...
 

Static Protected Member Functions

template<typename ChannelMap >
static std::vector< shared_ptr< const Channel > > getChannelsFromMap (const ChannelMap &channelMap)
 

Protected Attributes

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

Provides support for an underlying protocol.

See also
FaceSystem

A protocol factory provides support for an underlying protocol and owns Channel objects. It can process a subsection of face_system config section and create channels and multicast faces accordingly.

Definition at line 59 of file protocol-factory.hpp.

Member Typedef Documentation

◆ CtorParams

Constructor & Destructor Documentation

◆ ProtocolFactory()

nfd::face::ProtocolFactory::ProtocolFactory ( const CtorParams params)
explicit

Definition at line 62 of file protocol-factory.cpp.

References addFace, and netmon.

◆ ~ProtocolFactory()

nfd::face::ProtocolFactory::~ProtocolFactory ( )
pure virtualdefault

Member Function Documentation

◆ registerType()

template<typename PF >
static void nfd::face::ProtocolFactory::registerType ( const std::string &  id = PF::getId())
inlinestatic

Register a protocol factory type.

Template Parameters
PFsubclass of ProtocolFactory
Parameters
idfactory identifier

Definition at line 70 of file protocol-factory.hpp.

◆ create()

unique_ptr< ProtocolFactory > nfd::face::ProtocolFactory::create ( const std::string &  id,
const CtorParams params 
)
static

Create a protocol factory instance.

Return values
nullptrif a factory with the given id is not registered

Definition at line 42 of file protocol-factory.cpp.

Referenced by nfd::face::FaceSystem::FaceSystem().

◆ listRegistered()

std::set< std::string > nfd::face::ProtocolFactory::listRegistered ( )
static

Get all registered protocol factory ids.

Definition at line 54 of file protocol-factory.cpp.

Referenced by nfd::face::FaceSystem::FaceSystem().

◆ getId()

static const std::string& nfd::face::ProtocolFactory::getId ( )
staticnoexcept

Get id for this protocol factory.

face_system.factory-id config section is processed by the protocol factory.

◆ getProvidedSchemes()

const std::set<std::string>& nfd::face::ProtocolFactory::getProvidedSchemes ( ) const
inline

Get FaceUri schemes accepted by this protocol factory.

Definition at line 115 of file protocol-factory.hpp.

References providedSchemes.

◆ processConfig()

void nfd::face::ProtocolFactory::processConfig ( OptionalConfigSection  configSection,
FaceSystem::ConfigContext context 
)

Process face_system subsection that corresponds to this protocol factory id.

Parameters
configSectionthe configuration section or boost::none to indicate it is omitted
contextprovides access to data structures and contextual information
Exceptions
ConfigFile::Errorinvalid configuration

Definition at line 73 of file protocol-factory.cpp.

◆ createFace()

void nfd::face::ProtocolFactory::createFace ( const CreateFaceRequest req,
const FaceCreatedCallback onCreated,
const FaceCreationFailedCallback onFailure 
)

Create a unicast face.

Parameters
reqrequest object containing the face creation parameters
onCreatedcallback if face creation succeeds or face already exists; the settings of an existing face are not updated if they differ from the request
onFailurecallback if face creation fails

Definition at line 86 of file protocol-factory.cpp.

References ndn::FaceUri::canCanonize(), ndn::FaceUri::getScheme(), ndn::FaceUri::isCanonical(), nfd::face::ProtocolFactory::CreateFaceRequest::localUri, and nfd::face::ProtocolFactory::CreateFaceRequest::remoteUri.

◆ createNetdevBoundFace()

shared_ptr< Face > nfd::face::ProtocolFactory::createNetdevBoundFace ( const FaceUri remote,
const shared_ptr< const ndn::net::NetworkInterface > &  netdev 
)

Create a netdev-bound face.

Parameters
remoteremote FaceUri, must be canonical
netdevlocal network interface
Returns
new face
Exceptions
Errorcannot create a face using specified arguments
Note
The caller must ensure there is no existing netdev-bound face with same remote FaceUri on the same local network interface.

Definition at line 106 of file protocol-factory.cpp.

References ndn::FaceUri::isCanonical().

◆ getChannels()

std::vector< shared_ptr< const Channel > > nfd::face::ProtocolFactory::getChannels ( ) const

Get list of open channels (listening + non-listening)

Definition at line 121 of file protocol-factory.cpp.

◆ getChannelsFromMap()

template<typename ChannelMap >
static std::vector<shared_ptr<const Channel> > nfd::face::ProtocolFactory::getChannelsFromMap ( const ChannelMap &  channelMap)
inlinestaticprotected

Definition at line 171 of file protocol-factory.hpp.

Member Data Documentation

◆ providedSchemes

std::set<std::string> nfd::face::ProtocolFactory::providedSchemes
protected

FaceUri schemes provided by this protocol factory.

Definition at line 238 of file protocol-factory.hpp.

Referenced by getProvidedSchemes().

◆ addFace

FaceCreatedCallback nfd::face::ProtocolFactory::addFace
protected

callback when a new face is created

Definition at line 239 of file protocol-factory.hpp.

Referenced by ProtocolFactory().

◆ netmon

shared_ptr<ndn::net::NetworkMonitor> nfd::face::ProtocolFactory::netmon
protected

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 246 of file protocol-factory.hpp.

Referenced by nfd::face::EthernetFactory::EthernetFactory(), ProtocolFactory(), and nfd::face::UdpFactory::UdpFactory().


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