bool RibManager::extractParameters(const Name::Component& parameterComponent, ControlParameters& extractedParameters) { try { Block rawParameters = parameterComponent.blockFromValue(); extractedParameters.wireDecode(rawParameters); } catch (const tlv::Error&) { return false; } NFD_LOG_DEBUG("Parameters parsed OK"); return true; }
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); }