22#ifndef NDN_CXX_MGMT_NFD_CONTROLLER_HPP
23#define NDN_CXX_MGMT_NFD_CONTROLLER_HPP
63template<
typename Dataset>
65 std::function<void(
const std::invoke_result_t<
decltype(&Dataset::parseResult), Dataset,
ConstBufferPtr>&)>;
92 template<
typename Command,
93 typename CommandParameters =
typename Command::RequestParameters>
95 start(
const CommandParameters& parameters,
100 auto request = Command::createRequest(options.getPrefix(), parameters);
101 request.setInterestLifetime(options.getTimeout());
102 sendCommandRequest(request, options.getSigningInfo(),
103 [] (
const auto& responseParams) { Command::validateResponse(responseParams); },
104 std::move(onSuccess), onFailure);
110 template<
typename Dataset>
111 std::enable_if_t<std::is_default_constructible_v<Dataset>>
116 fetchDataset(Dataset(), onSuccess, onFailure, options);
122 template<
typename Dataset,
typename ParamType>
129 fetchDataset(Dataset(std::forward<ParamType>(param)), onSuccess, onFailure, options);
133 using ResponseParametersValidator = std::function<void(
const ControlParameters&)>;
136 sendCommandRequest(
Interest& interest,
138 ResponseParametersValidator checkResponse,
143 processCommandResponse(
const Data& data,
144 ResponseParametersValidator checkResponse,
149 processValidatedCommandResponse(
const Data& data,
150 const ResponseParametersValidator& checkResponse,
154 template<
typename Dataset>
156 fetchDataset(Dataset&& dataset,
157 const DatasetSuccessCallback<Dataset>& onSuccess,
159 const CommandOptions& options);
162 fetchDataset(
const Name& prefix,
165 const CommandOptions& options);
194template<
typename Dataset>
196Controller::fetchDataset(Dataset&& dataset,
203 [=, dataset = std::forward<Dataset>(dataset)] (
ConstBufferPtr payload) {
204 std::invoke_result_t<
decltype(&Dataset::parseResult), Dataset,
ConstBufferPtr> result;
206 result = dataset.parseResult(std::move(payload));
210 onFailure(
ERROR_SERVER,
"Dataset decoding failure: "s + e.what());
Represents a Data packet.
Provide a communication channel with local or remote NDN forwarder.
Represents an Interest packet.
Represents an absolute name.
Contains options for ControlCommand execution.
const Name & getPrefix() const
Returns the command prefix.
Represents parameters in a ControlCommand request or response.
NFD Management protocol client.
std::enable_if_t< std::is_default_constructible_v< Dataset > > fetch(const DatasetSuccessCallback< Dataset > &onSuccess, const DatasetFailureCallback &onFailure, const CommandOptions &options={})
Start dataset fetching.
void start(const CommandParameters ¶meters, CommandSuccessCallback onSuccess, const CommandFailureCallback &onFailure, const CommandOptions &options={})
Start command execution.
@ ERROR_LBOUND
Inclusive lower bound of error codes.
@ ERROR_VALIDATION
Error code for response validation failure.
@ ERROR_SERVER
Error code for server error.
@ ERROR_NACK
Error code for network Nack.
@ ERROR_TIMEOUT
Error code for timeout.
void fetch(ParamType &¶m, const DatasetSuccessCallback< Dataset > &onSuccess, const DatasetFailureCallback &onFailure, const CommandOptions &options={})
Start dataset fetching.
security::InterestSigner m_signer
security::Validator & m_validator
std::set< shared_ptr< SegmentFetcher > > m_fetchers
Helper class to create signed Interests.
The main interface for signing key management.
Signing parameters passed to KeyChain.
Interface for validating data and interest packets.
Represents an error in TLV encoding or decoding.
#define NDN_CXX_PUBLIC_WITH_TESTS_ELSE_PROTECTED
std::function< void(const ControlResponse &)> CommandFailureCallback
Callback on command failure.
std::function< void(uint32_t code, const std::string &reason)> DatasetFailureCallback
Callback on dataset retrieval failure.
std::function< void(const ControlParameters &)> CommandSuccessCallback
Callback on command success.
std::function< void(const std::invoke_result_t< decltype(&Dataset::parseResult), Dataset, ConstBufferPtr > &)> DatasetSuccessCallback
Callback on dataset retrieval success.
Validator & getAcceptAllValidator()
std::shared_ptr< const Buffer > ConstBufferPtr