Browse Source

interest: Update TLV encoding/decoding

Change-Id: I360619ec3380e68d2fb2dc335462259913d4af93
pull/1/head
Alexander Afanasyev 12 years ago
parent
commit
ff0a3940fb
  1. 90
      src/interest.cpp

90
src/interest.cpp

@ -86,6 +86,13 @@ Interest::wireEncode() const
if (wire_.hasWire())
return wire_;
// Interest ::= INTEREST-TYPE TLV-LENGTH
// Name
// Selectors?
// Nonce
// Scope?
// InterestLifetime?
wire_ = Block(Tlv::Interest);
wire_.push_back(getName().wireEncode());
@ -94,38 +101,24 @@ Interest::wireEncode() const
Block selectors(Tlv::Selectors);
if (getMinSuffixComponents() >= 0) {
OBufferStream os;
Tlv::writeVarNumber(os, Tlv::MinSuffixComponents);
Tlv::writeVarNumber(os, Tlv::sizeOfNonNegativeInteger(getMinSuffixComponents()));
Tlv::writeNonNegativeInteger(os, getMinSuffixComponents());
selectors.push_back(Block(os.buf()));
selectors.push_back
(nonNegativeIntegerBlock(Tlv::MinSuffixComponents, getMinSuffixComponents()));
}
if (getMaxSuffixComponents() >= 0) {
OBufferStream os;
Tlv::writeVarNumber(os, Tlv::MaxSuffixComponents);
Tlv::writeVarNumber(os, Tlv::sizeOfNonNegativeInteger(getMaxSuffixComponents()));
Tlv::writeNonNegativeInteger(os, getMaxSuffixComponents());
selectors.push_back(Block(os.buf()));
selectors.push_back
(nonNegativeIntegerBlock(Tlv::MaxSuffixComponents, getMaxSuffixComponents()));
}
if (!getExclude().empty()) {
selectors.push_back(getExclude().wireEncode());
selectors.push_back
(getExclude().wireEncode());
}
if (getChildSelector() >= 0) {
OBufferStream os;
Tlv::writeVarNumber(os, Tlv::ChildSelector);
Tlv::writeVarNumber(os, Tlv::sizeOfNonNegativeInteger(getChildSelector()));
Tlv::writeNonNegativeInteger(os, getChildSelector());
selectors.push_back(Block(os.buf()));
selectors.push_back
(nonNegativeIntegerBlock(Tlv::ChildSelector, getChildSelector()));
}
if (getMustBeFresh()) {
OBufferStream os;
Tlv::writeVarNumber(os, Tlv::MustBeFresh);
Tlv::writeVarNumber(os, 0);
selectors.push_back(Block(os.buf()));
selectors.push_back
(booleanBlock(Tlv::MustBeFresh));
}
selectors.encode();
@ -134,29 +127,17 @@ Interest::wireEncode() const
// Nonce
{
OBufferStream os;
Tlv::writeVarNumber(os, Tlv::Nonce);
Tlv::writeVarNumber(os, Tlv::sizeOfNonNegativeInteger(getNonce()));
Tlv::writeNonNegativeInteger(os, getNonce());
wire_.push_back(Block(os.buf()));
wire_.push_back
(nonNegativeIntegerBlock(Tlv::Nonce, getNonce()));
}
if (getScope() >= 0) {
OBufferStream os;
Tlv::writeVarNumber(os, Tlv::Scope);
Tlv::writeVarNumber(os, Tlv::sizeOfNonNegativeInteger(getScope()));
Tlv::writeNonNegativeInteger(os, getScope());
wire_.push_back(Block(os.buf()));
wire_.push_back
(nonNegativeIntegerBlock(Tlv::Scope, getScope()));
}
if (getInterestLifetime() >= 0) {
OBufferStream os;
Tlv::writeVarNumber(os, Tlv::InterestLifetime);
Tlv::writeVarNumber(os, Tlv::sizeOfNonNegativeInteger(getInterestLifetime()));
Tlv::writeNonNegativeInteger(os, getInterestLifetime());
wire_.push_back(Block(os.buf()));
wire_.push_back
(nonNegativeIntegerBlock(Tlv::InterestLifetime, getInterestLifetime()));
}
wire_.encode();
@ -169,6 +150,13 @@ Interest::wireDecode(const Block &wire)
wire_ = wire;
wire_.parse();
// Interest ::= INTEREST-TYPE TLV-LENGTH
// Name
// Selectors?
// Nonce
// Scope?
// InterestLifetime?
// Name
name_.wireDecode(wire_.get(Tlv::Name));
@ -182,16 +170,14 @@ Interest::wireDecode(const Block &wire)
Block::element_iterator val = selectors->find(Tlv::MinSuffixComponents);
if (val != selectors->getAll().end())
{
Buffer::const_iterator begin = val->value_begin();
minSuffixComponents_ = Tlv::readNonNegativeInteger(val->value_size(), begin, val->value_end());
minSuffixComponents_ = readNonNegativeInteger(*val);
}
// MaxSuffixComponents
val = selectors->find(Tlv::MaxSuffixComponents);
if (val != selectors->getAll().end())
{
Buffer::const_iterator begin = val->value_begin();
maxSuffixComponents_ = Tlv::readNonNegativeInteger(val->value_size(), begin, val->value_end());
maxSuffixComponents_ = readNonNegativeInteger(*val);
}
// Exclude
@ -205,8 +191,7 @@ Interest::wireDecode(const Block &wire)
val = selectors->find(Tlv::ChildSelector);
if (val != selectors->getAll().end())
{
Buffer::const_iterator begin = val->value_begin();
childSelector_ = Tlv::readNonNegativeInteger(val->value_size(), begin, val->value_end());
childSelector_ = readNonNegativeInteger(*val);
}
//MustBeFresh aka AnswerOriginKind
@ -221,24 +206,21 @@ Interest::wireDecode(const Block &wire)
Block::element_iterator val = wire_.find(Tlv::Nonce);
if (val != wire_.getAll().end())
{
Buffer::const_iterator begin = val->value_begin();
nonce_ = Tlv::readNonNegativeInteger(val->value_size(), begin, val->value_end());
nonce_ = readNonNegativeInteger(*val);
}
// Scope
val = wire_.find(Tlv::Scope);
if (val != wire_.getAll().end())
{
Buffer::const_iterator begin = val->value_begin();
scope_ = Tlv::readNonNegativeInteger(val->value_size(), begin, val->value_end());
scope_ = readNonNegativeInteger(*val);
}
// InterestLifetime
val = wire_.find(Tlv::InterestLifetime);
if (val != wire_.getAll().end())
{
Buffer::const_iterator begin = val->value_begin();
interestLifetime_ = Tlv::readNonNegativeInteger(val->value_size(), begin, val->value_end());
interestLifetime_ = readNonNegativeInteger(*val);
}
}

Loading…
Cancel
Save