nfd::face::TcpFactory Class Reference

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

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

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

Public Types

using CtorParams = ProtocolFactoryCtorParams

Public Member Functions

shared_ptr< TcpChannelcreateChannel (const tcp::Endpoint &localEndpoint)
 Create TCP-based channel using tcp::Endpoint. 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...
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
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

Protocol factory for TCP over IPv4 and IPv6.

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

Member Typedef Documentation

◆ CtorParams

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.

◆ createChannel()

shared_ptr< TcpChannel > nfd::face::TcpFactory::createChannel ( const tcp::Endpoint localEndpoint)

Create TCP-based channel using tcp::Endpoint.

tcp::Endpoint is really an alias for boost::asio::ip::tcp::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.

always a valid pointer to a TcpChannel object, an exception is thrown if it cannot be created.

Definition at line 197 of file tcp-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()

const std::string & nfd::face::TcpFactory::getId ( )

Definition at line 37 of file tcp-factory.cpp.

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