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")); }); }