nfd::face::ProtocolFactory Class Referenceabstract

provide support for an underlying protocol More...

#include <protocol-factory.hpp>

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

Classes

class  Error
 Base class for all exceptions thrown by protocol factories. More...
 

Public Member Functions

virtual ~ProtocolFactory ()=default
 
virtual void processConfig (OptionalConfigSection configSection, FaceSystem::ConfigContext &context)
 process face_system subsection that corresponds to this ProtocolFactory type More...
 
const std::set< std::string > & getProvidedSchemes ()
 
virtual void createFace (const FaceUri &uri, ndn::nfd::FacePersistency persistency, bool wantLocalFieldsEnabled, const FaceCreatedCallback &onCreated, const FaceCreationFailedCallback &onFailure)=0
 Try to create Face using the supplied FaceUri. More...
 
virtual std::vector< shared_ptr< const Channel > > getChannels () const =0
 

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)
 
static std::set< std::string > listRegistered ()
 
static const std::string & getId ()
 

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

Detailed Description

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

Constructor & Destructor Documentation

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

Member Function Documentation

unique_ptr< ProtocolFactory > nfd::face::ProtocolFactory::create ( const std::string &  id)
static
Returns
a protocol factory instance
Return values
nullptrif factory with id is not registered

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

virtual void nfd::face::ProtocolFactory::createFace ( const FaceUri &  uri,
ndn::nfd::FacePersistency  persistency,
bool  wantLocalFieldsEnabled,
const FaceCreatedCallback onCreated,
const FaceCreationFailedCallback onFailure 
)
pure virtual

Try to create Face using the supplied FaceUri.

This method should automatically choose channel, based on supplied FaceUri and create face.

Parameters
uriremote URI of the new face
persistencypersistency of the new face
wantLocalFieldsEnabledwhether local fields should be enabled on the face
onCreatedcallback if face creation succeeds If a face with the same remote URI already exists, its persistency and LocalFieldsEnabled setting will not be modified.
onFailurecallback if face creation fails

Implemented in nfd::face::UdpFactory, nfd::face::EthernetFactory, nfd::face::WebSocketFactory, nfd::face::TcpFactory, and nfd::face::UnixStreamFactory.

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

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

static const std::string& nfd::face::ProtocolFactory::getId ( )
static
Returns
protocol factory id

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

const std::set<std::string>& nfd::face::ProtocolFactory::getProvidedSchemes ( )
inline
Returns
FaceUri schemes accepted by this ProtocolFactory

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

std::set< std::string > nfd::face::ProtocolFactory::listRegistered ( )
static
Returns
registered protocol factory ids

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

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

process face_system subsection that corresponds to this ProtocolFactory type

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

This function updates providedSchemes

Todo:
implement in every subclass and make this pure-virtual

Reimplemented in nfd::face::UdpFactory, nfd::face::EthernetFactory, nfd::face::TcpFactory, nfd::face::UnixStreamFactory, and nfd::face::WebSocketFactory.

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

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

register a protocol factory type

Template Parameters
Ssubclass of ProtocolFactory
Parameters
idfactory identifier

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

Member Data Documentation

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

FaceUri schemes provided by this ProtocolFactory.

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