nfd::face::ProtocolFactory Class Referenceabstract

Provides support for an underlying protocol. More...

#include <daemon/face/protocol-factory.hpp>

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


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

Static Public Member Functions

static unique_ptr< ProtocolFactorycreate (const std::string &id, const CtorParams &params)
 Create a protocol factory instance. More...
static const std::string & getId () noexcept
 Get id for this protocol factory. More...
static std::set< std::string > listRegistered ()
 Get all 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 protocol factory. More...

Detailed Description

Provides support for an underlying protocol.

See also

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)

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

◆ ~ProtocolFactory()

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

Member Function Documentation

◆ create()

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

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.

◆ createFace()

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

Create a unicast face.

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.

◆ createNetdevBoundFace()

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

Create a netdev-bound face.

remoteremote FaceUri, must be canonical
netdevlocal network interface
new face
Errorcannot create a face using specified arguments
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.

◆ 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)

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

◆ getId()

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

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

Get FaceUri schemes accepted by this protocol factory.

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

◆ listRegistered()

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

Get all registered protocol factory ids.

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

◆ processConfig()

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

Process face_system subsection that corresponds to this protocol factory id.

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

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

◆ registerType()

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

Register a protocol factory type.

Template Parameters
PFsubclass of ProtocolFactory
idfactory identifier

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

Member Data Documentation

◆ addFace

FaceCreatedCallback nfd::face::ProtocolFactory::addFace

callback when a new face is created

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

◆ netmon

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

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.

◆ providedSchemes

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

FaceUri schemes provided by this protocol factory.

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