30 Lsa::Lsa(
const ndn::Name& originRouter, uint64_t seqNo,
31 ndn::time::system_clock::time_point expirationTimePoint)
32 : m_originRouter(originRouter)
34 , m_expirationTimePoint(expirationTimePoint)
39 : m_originRouter(lsa.getOriginRouter())
40 , m_seqNo(lsa.getSeqNo())
41 , m_expirationTimePoint(lsa.getExpirationTimePoint())
45 template<ndn::encoding::Tag TAG>
49 size_t totalLength = 0;
51 totalLength += prependStringBlock(encoder,
59 totalLength += encoder.prependVarNumber(totalLength);
73 ndn::Block baseWire = wire;
76 auto val = baseWire.elements_begin();
78 if (val != baseWire.elements_end() && val->type() == ndn::tlv::Name) {
82 NDN_THROW(
Error(
"OriginRouter: Missing required Name field"));
88 m_seqNo = ndn::readNonNegativeInteger(*val);
92 NDN_THROW(
Error(
"Missing required SequenceNumber field"));
99 NDN_THROW(
Error(
"Missing required ExpirationTime field"));
126 std::string typeString;
128 if (typeString ==
"ADJACENCY") {
131 else if (typeString ==
"COORDINATE") {
134 else if (typeString ==
"NAME") {
146 std::ostringstream os;
148 os <<
" " <<
getType() <<
" LSA:\n"
150 <<
" Sequence Number : " <<
m_seqNo <<
"\n"
151 <<
" Expires in : " << ndn::time::duration_cast<ndn::time::milliseconds>(duration)
Data abstraction for Lsa Lsa := LSA-TYPE TLV-LENGTH Name SequenceNumber ExpirationTimePoint.
virtual const ndn::Block & wireEncode() const =0
std::string getString() const
virtual Type getType() const =0
ndn::time::system_clock::time_point m_expirationTimePoint
void wireDecode(const ndn::Block &wire)
Copyright (c) 2014-2020, The University of Memphis, Regents of the University of California.
std::istream & operator>>(std::istream &is, Lsa::Type &type)
std::ostream & operator<<(std::ostream &os, const Adjacent &adjacent)
NDN_CXX_DEFINE_WIRE_ENCODE_INSTANTIATIONS(Adjacent)