void ManagerBase::sendResponse(const Name& name, const ControlResponse& response) { NFD_LOG_DEBUG("responding" << " name: " << name << " code: " << response.getCode() << " text: " << response.getText()); const Block& encodedControl = response.wireEncode(); shared_ptr<Data> responseData(make_shared<Data>(name)); responseData->setContent(encodedControl); m_keyChain.sign(*responseData); m_face->putData(*responseData); }
void Controller::processValidatedCommandResponse(const Data& data, const shared_ptr<ControlCommand>& command, const CommandSucceedCallback& onSuccess, const CommandFailCallback& onFailure) { ControlResponse response; try { response.wireDecode(data.getContent().blockFromValue()); } catch (const tlv::Error& e) { if (onFailure) onFailure(ControlResponse(ERROR_SERVER, e.what())); return; } uint32_t code = response.getCode(); if (code >= ERROR_LBOUND) { if (onFailure) onFailure(response); return; } ControlParameters parameters; try { parameters.wireDecode(response.getBody()); } catch (const tlv::Error& e) { if (onFailure) onFailure(ControlResponse(ERROR_SERVER, e.what())); return; } try { command->validateResponse(parameters); } catch (const ControlCommand::ArgumentError& e) { if (onFailure) onFailure(ControlResponse(ERROR_SERVER, e.what())); return; } if (onSuccess) onSuccess(parameters); }
void recordCommandFail(const ControlResponse& response) { failCodes.push_back(response.getCode()); }