Skip to content

Commit d384a53

Browse files
committed
mgmt: use std::bitset in ControlParameters
Change-Id: I86511f29e230c828882fa958becb868fd38f4786
1 parent 3e3887c commit d384a53

File tree

3 files changed

+64
-62
lines changed

3 files changed

+64
-62
lines changed

ndn-cxx/mgmt/nfd/control-command.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@ namespace ndn::nfd {
2626
void
2727
ControlParametersCommandFormat::validate(const ControlParameters& parameters) const
2828
{
29-
const auto& presentFields = parameters.getPresentFields();
29+
auto presentFields = parameters.getPresentFields();
30+
BOOST_ASSERT(presentFields.size() == m_required.size() &&
31+
presentFields.size() == m_optional.size());
3032

31-
for (size_t i = 0; i < CONTROL_PARAMETER_UBOUND; ++i) {
33+
for (size_t i = 0; i < presentFields.size(); ++i) {
3234
bool isPresent = presentFields[i];
3335
if (m_required[i]) {
3436
if (!isPresent) {

ndn-cxx/mgmt/nfd/control-parameters.cpp

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,11 @@
2626

2727
namespace ndn::nfd {
2828

29-
ControlParameters::ControlParameters()
30-
: m_hasFields(CONTROL_PARAMETER_UBOUND)
31-
{
32-
}
29+
static_assert(CONTROL_PARAMETER_FIELD.size() == CONTROL_PARAMETER_UBOUND);
30+
31+
ControlParameters::ControlParameters() = default;
3332

3433
ControlParameters::ControlParameters(const Block& block)
35-
: m_hasFields(CONTROL_PARAMETER_UBOUND)
3634
{
3735
wireDecode(block);
3836
}
@@ -132,71 +130,71 @@ ControlParameters::wireDecode(const Block& block)
132130
for (const auto& e : m_wire.elements()) {
133131
switch (e.type()) {
134132
case tlv::Name:
135-
m_hasFields[CONTROL_PARAMETER_NAME] = true;
133+
m_hasFields.set(CONTROL_PARAMETER_NAME);
136134
m_name.wireDecode(e);
137135
break;
138136
case tlv::nfd::FaceId:
139-
m_hasFields[CONTROL_PARAMETER_FACE_ID] = true;
137+
m_hasFields.set(CONTROL_PARAMETER_FACE_ID);
140138
m_faceId = readNonNegativeInteger(e);
141139
break;
142140
case tlv::nfd::Uri:
143-
m_hasFields[CONTROL_PARAMETER_URI] = true;
141+
m_hasFields.set(CONTROL_PARAMETER_URI);
144142
m_uri = readString(e);
145143
break;
146144
case tlv::nfd::LocalUri:
147-
m_hasFields[CONTROL_PARAMETER_LOCAL_URI] = true;
145+
m_hasFields.set(CONTROL_PARAMETER_LOCAL_URI);
148146
m_localUri = readString(e);
149147
break;
150148
case tlv::nfd::Origin:
151-
m_hasFields[CONTROL_PARAMETER_ORIGIN] = true;
149+
m_hasFields.set(CONTROL_PARAMETER_ORIGIN);
152150
m_origin = readNonNegativeIntegerAs<RouteOrigin>(e);
153151
break;
154152
case tlv::nfd::Cost:
155-
m_hasFields[CONTROL_PARAMETER_COST] = true;
153+
m_hasFields.set(CONTROL_PARAMETER_COST);
156154
m_cost = readNonNegativeInteger(e);
157155
break;
158156
case tlv::nfd::Capacity:
159-
m_hasFields[CONTROL_PARAMETER_CAPACITY] = true;
157+
m_hasFields.set(CONTROL_PARAMETER_CAPACITY);
160158
m_capacity = readNonNegativeInteger(e);
161159
break;
162160
case tlv::nfd::Count:
163-
m_hasFields[CONTROL_PARAMETER_COUNT] = true;
161+
m_hasFields.set(CONTROL_PARAMETER_COUNT);
164162
m_count = readNonNegativeInteger(e);
165163
break;
166164
case tlv::nfd::Flags:
167-
m_hasFields[CONTROL_PARAMETER_FLAGS] = true;
165+
m_hasFields.set(CONTROL_PARAMETER_FLAGS);
168166
m_flags = readNonNegativeInteger(e);
169167
break;
170168
case tlv::nfd::Mask:
171-
m_hasFields[CONTROL_PARAMETER_MASK] = true;
169+
m_hasFields.set(CONTROL_PARAMETER_MASK);
172170
m_mask = readNonNegativeInteger(e);
173171
break;
174172
case tlv::nfd::Strategy:
175-
m_hasFields[CONTROL_PARAMETER_STRATEGY] = true;
173+
m_hasFields.set(CONTROL_PARAMETER_STRATEGY);
176174
e.parse();
177175
if (e.elements().empty()) {
178176
NDN_THROW(Error("Expecting Strategy.Name"));
179177
}
180178
m_strategy.wireDecode(e.elements().front());
181179
break;
182180
case tlv::nfd::ExpirationPeriod:
183-
m_hasFields[CONTROL_PARAMETER_EXPIRATION_PERIOD] = true;
181+
m_hasFields.set(CONTROL_PARAMETER_EXPIRATION_PERIOD);
184182
m_expirationPeriod = time::milliseconds(readNonNegativeInteger(e));
185183
break;
186184
case tlv::nfd::FacePersistency:
187-
m_hasFields[CONTROL_PARAMETER_FACE_PERSISTENCY] = true;
185+
m_hasFields.set(CONTROL_PARAMETER_FACE_PERSISTENCY);
188186
m_facePersistency = readNonNegativeIntegerAs<FacePersistency>(e);
189187
break;
190188
case tlv::nfd::BaseCongestionMarkingInterval:
191-
m_hasFields[CONTROL_PARAMETER_BASE_CONGESTION_MARKING_INTERVAL] = true;
189+
m_hasFields.set(CONTROL_PARAMETER_BASE_CONGESTION_MARKING_INTERVAL);
192190
m_baseCongestionMarkingInterval = time::nanoseconds(readNonNegativeInteger(e));
193191
break;
194192
case tlv::nfd::DefaultCongestionThreshold:
195-
m_hasFields[CONTROL_PARAMETER_DEFAULT_CONGESTION_THRESHOLD] = true;
193+
m_hasFields.set(CONTROL_PARAMETER_DEFAULT_CONGESTION_THRESHOLD);
196194
m_defaultCongestionThreshold = readNonNegativeInteger(e);
197195
break;
198196
case tlv::nfd::Mtu:
199-
m_hasFields[CONTROL_PARAMETER_MTU] = true;
197+
m_hasFields.set(CONTROL_PARAMETER_MTU);
200198
m_mtu = readNonNegativeInteger(e);
201199
break;
202200
default:
@@ -235,7 +233,7 @@ ControlParameters::getFlagBit(size_t bit) const
235233
}
236234

237235
ControlParameters&
238-
ControlParameters::setFlagBit(size_t bit, bool value, bool wantMask/* = true*/)
236+
ControlParameters::setFlagBit(size_t bit, bool value, bool wantMask)
239237
{
240238
if (bit >= 64) {
241239
NDN_THROW(std::out_of_range("bit must be within range [0, 64)"));

0 commit comments

Comments
 (0)