33 static_assert(std::is_base_of<tlv::Error, FaceStatus::Error>::value,
34 "FaceStatus::Error must inherit from tlv::Error");
37 : m_hasExpirationPeriod(false)
55 template<encoding::Tag TAG>
59 size_t totalLength = 0;
85 if (m_hasExpirationPeriod) {
96 totalLength += encoder.prependVarNumber(totalLength);
102 FaceStatus::wireEncode<encoding::EncoderTag>(EncodingImpl<encoding::EncoderTag>& block)
const;
105 FaceStatus::wireEncode<encoding::EstimatorTag>(EncodingImpl<encoding::EstimatorTag>& block)
const;
119 m_wire = buffer.block();
127 BOOST_THROW_EXCEPTION(Error(
"expecting FaceStatus block"));
138 BOOST_THROW_EXCEPTION(Error(
"missing required FaceId field"));
142 m_remoteUri.assign(reinterpret_cast<const char*>(val->value()), val->value_size());
146 BOOST_THROW_EXCEPTION(Error(
"missing required Uri field"));
150 m_localUri.assign(reinterpret_cast<const char*>(val->value()), val->value_size());
154 BOOST_THROW_EXCEPTION(Error(
"missing required LocalUri field"));
159 m_hasExpirationPeriod =
true;
163 m_hasExpirationPeriod =
false;
172 BOOST_THROW_EXCEPTION(Error(
"missing required FaceScope field"));
180 BOOST_THROW_EXCEPTION(Error(
"missing required FacePersistency field"));
188 BOOST_THROW_EXCEPTION(Error(
"missing required LinkType field"));
196 BOOST_THROW_EXCEPTION(Error(
"missing required NInInterests field"));
204 BOOST_THROW_EXCEPTION(Error(
"missing required NInDatas field"));
212 BOOST_THROW_EXCEPTION(Error(
"missing required NInNacks field"));
220 BOOST_THROW_EXCEPTION(Error(
"missing required NOutInterests field"));
228 BOOST_THROW_EXCEPTION(Error(
"missing required NOutDatas field"));
236 BOOST_THROW_EXCEPTION(Error(
"missing required NOutNacks field"));
244 BOOST_THROW_EXCEPTION(Error(
"missing required NInBytes field"));
252 BOOST_THROW_EXCEPTION(Error(
"missing required NOutBytes field"));
260 BOOST_THROW_EXCEPTION(Error(
"missing required Flags field"));
268 m_expirationPeriod = expirationPeriod;
269 m_hasExpirationPeriod =
true;
277 m_nInInterests = nInInterests;
285 m_nInDatas = nInDatas;
293 m_nInNacks = nInNacks;
301 m_nOutInterests = nOutInterests;
309 m_nOutDatas = nOutDatas;
317 m_nOutNacks = nOutNacks;
325 m_nInBytes = nInBytes;
333 m_nOutBytes = nOutBytes;
349 BOOST_THROW_EXCEPTION(std::out_of_range(
"bit must be within range [0, 64)"));
352 return m_flags & (1 << bit);
359 BOOST_THROW_EXCEPTION(std::out_of_range(
"bit must be within range [0, 64)"));
365 m_flags |= (1 << bit);
368 m_flags &= ~(1 << bit);
384 <<
"FaceID: " << status.
getFaceId() <<
",\n"
392 os <<
"ExpirationPeriod: infinite,\n";
399 auto osFlags = os.flags();
400 os <<
"Flags: " << std::showbase << std::hex << status.
getFlags() <<
",\n";
403 os <<
"Counters: { Interests: {in: " << status.
getNInInterests() <<
", "
uint64_t getNInNacks() const
void wireDecode(const Block &wire)
decode FaceStatus
LinkType getLinkType() const
Copyright (c) 2013-2016 Regents of the University of California.
size_t prependNonNegativeIntegerBlock(EncodingImpl< TAG > &encoder, uint32_t type, uint64_t value)
Helper to prepend TLV block type type containing non-negative integer value.
FaceStatus & setNInDatas(uint64_t nInDatas)
EncodingImpl< EstimatorTag > EncodingEstimator
bool hasExpirationPeriod() const
uint64_t getFlags() const
FaceScope getFaceScope() const
uint64_t getNInDatas() const
FaceStatus & setNOutDatas(uint64_t nOutDatas)
FacePersistency m_facePersistency
Class representing a wire element of NDN-TLV packet format.
FaceStatus & setNOutBytes(uint64_t nOutBytes)
FaceStatus & setNOutInterests(uint64_t nOutInterests)
uint64_t readNonNegativeInteger(const Block &block)
Helper to read a non-negative integer from a block.
element_const_iterator elements_end() const
FaceStatus & setNInInterests(uint64_t nInInterests)
element_const_iterator elements_begin() const
FaceStatus & setNInBytes(uint64_t nInBytes)
uint64_t getNInInterests() const
FaceStatus & setNInNacks(uint64_t nInNacks)
EncodingImpl< EncoderTag > EncodingBuffer
FaceStatus & setExpirationPeriod(const time::milliseconds &expirationPeriod)
bool getFlagBit(size_t bit) const
FaceStatus & setFlagBit(size_t bit, bool value)
uint64_t getFaceId() const
element_container::const_iterator element_const_iterator
std::ostream & operator<<(std::ostream &os, FaceScope faceScope)
void reset()
Reset wire buffer of the element.
const std::string & getLocalUri() const
uint64_t getNOutBytes() const
void parse() const
Parse wire buffer into subblocks.
const std::string & getRemoteUri() const
uint64_t getNOutInterests() const
FaceStatus & setFlags(uint64_t flags)
FacePersistency getFacePersistency() const
const time::milliseconds & getExpirationPeriod() const
FaceStatus & setNOutNacks(uint64_t nOutNacks)
uint64_t getNInBytes() const
bool hasWire() const
Check if the Block has fully encoded wire.
uint64_t getNOutDatas() const
a concept check for TLV abstraction with .wireEncode method
a concept check for TLV abstraction with .wireDecode method and constructible from Block ...
const Block & wireEncode() const
encode FaceStatus
uint64_t getNOutNacks() const