30 BOOST_ASSERT(presentFields.size() == m_required.size() &&
31 presentFields.size() == m_optional.size());
33 for (
size_t i = 0; i < presentFields.size(); ++i) {
34 bool isPresent = presentFields[i];
40 else if (isPresent && !m_optional[i]) {
52shared_ptr<ControlParameters>
56 return make_shared<ControlParameters>(block);
97FaceCreateCommand::validateResponseImpl(
const ControlParameters& parameters)
100 NDN_THROW(ArgumentError(
"FaceId must be valid"));
123FaceUpdateCommand::applyDefaultsToRequestImpl(ControlParameters& parameters)
125 if (!parameters.hasFaceId()) {
126 parameters.setFaceId(0);
131FaceUpdateCommand::validateResponseImpl(
const ControlParameters& parameters)
134 NDN_THROW(ArgumentError(
"FaceId must be valid"));
146FaceDestroyCommand::validateRequestImpl(
const ControlParameters& parameters)
149 NDN_THROW(ArgumentError(
"FaceId must be valid"));
154FaceDestroyCommand::validateResponseImpl(
const ControlParameters& parameters)
156 validateRequestImpl(parameters);
171FibAddNextHopCommand::applyDefaultsToRequestImpl(ControlParameters& parameters)
173 if (!parameters.hasFaceId()) {
174 parameters.setFaceId(0);
176 if (!parameters.hasCost()) {
177 parameters.setCost(0);
182FibAddNextHopCommand::validateResponseImpl(
const ControlParameters& parameters)
185 NDN_THROW(ArgumentError(
"FaceId must be valid"));
199FibRemoveNextHopCommand::applyDefaultsToRequestImpl(ControlParameters& parameters)
201 if (!parameters.hasFaceId()) {
202 parameters.setFaceId(0);
207FibRemoveNextHopCommand::validateResponseImpl(
const ControlParameters& parameters)
210 NDN_THROW(ArgumentError(
"FaceId must be valid"));
235CsEraseCommand::validateRequestImpl(
const ControlParameters& parameters)
237 if (parameters.hasCount() && parameters.getCount() == 0) {
238 NDN_THROW(ArgumentError(
"Count must be positive"));
243CsEraseCommand::validateResponseImpl(
const ControlParameters& parameters)
245 if (parameters.hasCapacity() && parameters.getCapacity() == 0) {
246 NDN_THROW(ArgumentError(
"Capacity must be positive"));
267StrategyChoiceUnsetCommand::validateRequestImpl(
const ControlParameters& parameters)
269 if (parameters.getName().empty()) {
270 NDN_THROW(ArgumentError(
"Name must not be ndn:/"));
275StrategyChoiceUnsetCommand::validateResponseImpl(
const ControlParameters& parameters)
277 validateRequestImpl(parameters);
298RibRegisterCommand::applyDefaultsToRequestImpl(ControlParameters& parameters)
300 if (!parameters.hasFaceId()) {
301 parameters.setFaceId(0);
303 if (!parameters.hasOrigin()) {
306 if (!parameters.hasCost()) {
307 parameters.setCost(0);
309 if (!parameters.hasFlags()) {
315RibRegisterCommand::validateResponseImpl(
const ControlParameters& parameters)
318 NDN_THROW(ArgumentError(
"FaceId must be valid"));
334RibUnregisterCommand::applyDefaultsToRequestImpl(ControlParameters& parameters)
336 if (!parameters.hasFaceId()) {
337 parameters.setFaceId(0);
339 if (!parameters.hasOrigin()) {
345RibUnregisterCommand::validateResponseImpl(
const ControlParameters& parameters)
348 NDN_THROW(ArgumentError(
"FaceId must be valid"));
369 return m_prefixAnn.
getData()->wireEncode();
374 RibRegisterCommand::s_responseFormat;
385RibAnnounceCommand::validateResponseImpl(
const ControlParameters& parameters)
387 RibRegisterCommand::validateResponseImpl(parameters);
Represents a TLV element of the NDN packet format.
element_const_iterator find(uint32_t type) const
Find the first sub-element of the specified TLV-TYPE.
Block blockFromValue() const
Return a new Block constructed from the TLV-VALUE of this Block.
element_const_iterator elements_end() const noexcept
Equivalent to elements().end().
void parse() const
Parse TLV-VALUE into sub-elements.
Represents a Data packet.
Represents an Interest packet.
const Name & getName() const noexcept
Get the Interest name.
Interest & setName(const Name &name)
Set the Interest name.
Name & append(const Component &component)
Append a name component.
const Component & at(ssize_t i) const
Returns an immutable reference to the component at the specified index, with bounds checking.
A prefix announcement object that represents an application's intent of registering a prefix toward i...
const std::optional< Data > & getData() const
Get the Data representing the prefix announcement, if available.
Represents an error in the parameters of the control command request or response.
ControlParametersCommandFormat ResponseFormat
ControlParametersCommandFormat RequestFormat
Represents parameters in a ControlCommand request or response.
ControlParameters & setFacePersistency(FacePersistency persistency)
auto getPresentFields() const noexcept
bool hasFacePersistency() const
size_t wireEncode(EncodingImpl< TAG > &encoder) const
Request parameters for rib/announce command.
const PrefixAnnouncement & getPrefixAnnouncement() const
Block wireEncode() const final
void wireDecode(const Block &wire) final
@ FACE_PERSISTENCY_PERSISTENT
face is persistent
@ ROUTE_FLAG_CHILD_INHERIT
@ CONTROL_PARAMETER_STRATEGY
@ CONTROL_PARAMETER_FACE_PERSISTENCY
@ CONTROL_PARAMETER_DEFAULT_CONGESTION_THRESHOLD
@ CONTROL_PARAMETER_LOCAL_URI
@ CONTROL_PARAMETER_CAPACITY
@ CONTROL_PARAMETER_EXPIRATION_PERIOD
@ CONTROL_PARAMETER_FLAGS
@ CONTROL_PARAMETER_FACE_ID
@ CONTROL_PARAMETER_COUNT
@ CONTROL_PARAMETER_ORIGIN
@ CONTROL_PARAMETER_BASE_CONGESTION_MARKING_INTERVAL
Contains classes and functions related to the NFD Management protocol.
constexpr uint64_t INVALID_FACE_ID
constexpr std::array CONTROL_PARAMETER_FIELD