void Controller::startCommand(const shared_ptr<ControlCommand>& command, const ControlParameters& parameters, const CommandSucceedCallback& onSuccess1, const CommandFailCallback& onFailure1, const CommandOptions& options) { const CommandSucceedCallback& onSuccess = onSuccess1 ? onSuccess1 : [] (const ControlParameters&) {}; const CommandFailCallback& onFailure = onFailure1 ? onFailure1 : [] (const ControlResponse&) {}; Name requestName = command->getRequestName(options.getPrefix(), parameters); Interest interest(requestName); interest.setInterestLifetime(options.getTimeout()); m_keyChain.sign(interest, options.getSigningInfo()); m_face.expressInterest(interest, [=] (const Interest&, const Data& data) { this->processCommandResponse(data, command, onSuccess, onFailure); }, [=] (const Interest&, const lp::Nack&) { onFailure(ControlResponse(Controller::ERROR_NACK, "network Nack received")); }, [=] (const Interest&) { onFailure(ControlResponse(Controller::ERROR_TIMEOUT, "request timed out")); }); }
void AutoPrefixPropagator::afterRibInsert(const ControlParameters& parameters, const CommandOptions& options) { BOOST_ASSERT(m_propagatedEntries.find(parameters.getName()) == m_propagatedEntries.end()); // keep valid entries although there is no connectivity to hub auto& entry = m_propagatedEntries[parameters.getName()] .setSigningIdentity(options.getSigningInfo().getSignerName()); if (!m_hasConnectedHub) { NFD_LOG_INFO("no hub connected to propagate " << parameters.getName()); return; } // NEW --> PROPAGATING entry.startPropagation(); startPropagation(parameters, options, m_baseRetryWait); }
void Controller::startCommand(const shared_ptr<ControlCommand>& command, const ControlParameters& parameters, const CommandSucceedCallback& onSuccess, const CommandFailCallback& onFailure, const CommandOptions& options) { Name requestName = command->getRequestName(options.getPrefix(), parameters); Interest interest = m_signer.makeCommandInterest(requestName, options.getSigningInfo()); interest.setInterestLifetime(options.getTimeout()); m_face.expressInterest(interest, [=] (const Interest&, const Data& data) { processCommandResponse(data, command, onSuccess, onFailure); }, [=] (const Interest&, const lp::Nack&) { if (onFailure) onFailure(ControlResponse(Controller::ERROR_NACK, "network Nack received")); }, [=] (const Interest&) { if (onFailure) onFailure(ControlResponse(Controller::ERROR_TIMEOUT, "request timed out")); }); }