represents a dispatcher on server side of NFD Management protocol More...
#include <dispatcher.hpp>
Public Member Functions | |
Dispatcher (Face &face, security::KeyChain &keyChain, const security::SigningInfo &signingInfo=security::SigningInfo()) | |
constructor More... | |
virtual | ~Dispatcher () |
void | addTopPrefix (const Name &prefix, bool wantRegister=true, const security::SigningInfo &signingInfo=security::SigningInfo()) |
add a top-level prefix More... | |
void | removeTopPrefix (const Name &prefix) |
remove a top-level prefix More... | |
template<typename CP > | |
void | addControlCommand (const PartialName &relPrefix, Authorization authorization, ValidateParameters validateParams, ControlCommandHandler handler) |
register a ControlCommand More... | |
void | addStatusDataset (const PartialName &relPrefix, Authorization authorization, StatusDatasetHandler handler) |
register a StatusDataset or a prefix under which StatusDatasets can be requested More... | |
PostNotification | addNotificationStream (const PartialName &relPrefix) |
register a NotificationStream More... | |
represents a dispatcher on server side of NFD Management protocol
Definition at line 132 of file dispatcher.hpp.
ndn::mgmt::Dispatcher::Dispatcher | ( | Face & | face, |
security::KeyChain & | keyChain, | ||
const security::SigningInfo & | signingInfo = security::SigningInfo() |
||
) |
constructor
face | the Face on which the dispatcher operates |
keyChain | a KeyChain to sign Data |
signingInfo | signing parameters to sign Data with keyChain |
Definition at line 47 of file dispatcher.cpp.
|
virtual |
Definition at line 55 of file dispatcher.cpp.
References removeTopPrefix().
void ndn::mgmt::Dispatcher::addTopPrefix | ( | const Name & | prefix, |
bool | wantRegister = true , |
||
const security::SigningInfo & | signingInfo = security::SigningInfo() |
||
) |
add a top-level prefix
prefix | a top-level prefix, e.g., "/localhost/nfd" |
wantRegister | whether prefix registration should be performed through the Face |
signingInfo | signing parameters to sign the prefix registration command |
std::out_of_range | prefix overlaps with an existing top-level prefix |
Procedure for adding a top-level prefix:
Definition at line 72 of file dispatcher.cpp.
References ndn::Name::append(), ndn::Name::isPrefixOf(), ndn::Face::registerPrefix(), and ndn::Face::setInterestFilter().
void ndn::mgmt::Dispatcher::removeTopPrefix | ( | const Name & | prefix | ) |
remove a top-level prefix
prefix | a top-level prefix, e.g., "/localhost/nfd" |
Procedure for removing a top-level prefix:
Definition at line 109 of file dispatcher.cpp.
References ndn::tlv::ContentType_Nack, ndn::Name::get(), ndn::Interest::getName(), ndn::Name::isPrefixOf(), ndn::Face::put(), ndn::MetaInfo::setType(), ndn::security::KeyChain::sign(), ndn::Name::size(), ndn::mgmt::STATUS403, ndn::Face::unregisterPrefix(), ndn::Face::unsetInterestFilter(), and ndn::mgmt::ControlResponse::wireEncode().
Referenced by ~Dispatcher().
void ndn::mgmt::Dispatcher::addControlCommand | ( | const PartialName & | relPrefix, |
Authorization | authorization, | ||
ValidateParameters | validateParams, | ||
ControlCommandHandler | handler | ||
) |
register a ControlCommand
CP | subclass of ControlParameters used by this command |
relPrefix | a prefix for this command, e.g., "faces/create"; relPrefixes in ControlCommands, StatusDatasets, NotificationStreams must be non-overlapping (no relPrefix is a prefix of another relPrefix) |
std::out_of_range | relPrefix overlaps with an existing relPrefix |
std::domain_error | one or more top-level prefix has been added |
Procedure for processing a ControlCommand:
Definition at line 420 of file dispatcher.hpp.
void ndn::mgmt::Dispatcher::addStatusDataset | ( | const PartialName & | relPrefix, |
Authorization | authorization, | ||
StatusDatasetHandler | handler | ||
) |
register a StatusDataset or a prefix under which StatusDatasets can be requested
relPrefix | a prefix for this dataset, e.g., "faces/list"; relPrefixes in ControlCommands, StatusDatasets, NotificationStreams must be non-overlapping (no relPrefix is a prefix of another relPrefix) |
authorization | should set identity to Name() if the dataset is public |
std::out_of_range | relPrefix overlaps with an existing relPrefix |
std::domain_error | one or more top-level prefix has been added |
The payload of the returned status dataset data packet is at most half of the maximum data packet size.
Procedure for processing a StatusDataset request:
As an optimization, a Data packet may be sent as soon as enough octets have been collected through StatusDatasetAppend calls.
Definition at line 228 of file dispatcher.cpp.
References ndn::Interest::getName(), and ndn::Name::size().
PostNotification ndn::mgmt::Dispatcher::addNotificationStream | ( | const PartialName & | relPrefix | ) |
register a NotificationStream
relPrefix | a prefix for this notification stream, e.g., "faces/events"; relPrefixes in ControlCommands, StatusDatasets, NotificationStreams must be non-overlapping (no relPrefix is a prefix of another relPrefix) |
std::out_of_range | relPrefix overlaps with an existing relPrefix |
std::domain_error | one or more top-level prefix has been added |
Procedure for posting a notification:
Definition at line 279 of file dispatcher.cpp.
References ndn::Name::append(), ndn::Name::appendSequenceNumber(), and ndn::tlv::MetaInfo.