示例#1
0
void
Tlv0_2WireFormat::decodeInterest
  (Interest& interest, const uint8_t *input, size_t inputLength,
   size_t *signedPortionBeginOffset, size_t *signedPortionEndOffset)
{
  struct ndn_NameComponent nameComponents[100];
  struct ndn_ExcludeEntry excludeEntries[100];
  struct ndn_NameComponent keyNameComponents[100];
  InterestLite interestLite
    (nameComponents, sizeof(nameComponents) / sizeof(nameComponents[0]),
     excludeEntries, sizeof(excludeEntries) / sizeof(excludeEntries[0]),
     keyNameComponents, sizeof(keyNameComponents) / sizeof(keyNameComponents[0]));

  ndn_Error error;
  if ((error = Tlv0_2WireFormatLite::decodeInterest
       (interestLite, input, inputLength, signedPortionBeginOffset,
        signedPortionEndOffset)))
    throw runtime_error(ndn_getErrorString(error));

  if (interestLite.getForwardingHintWireEncoding().buf()) {
    // Throw any decoding exceptions now before calling set.
    DelegationSet delegationSet;
    decodeDelegationSet
      (delegationSet, interestLite.getForwardingHintWireEncoding().buf(),
       interestLite.getForwardingHintWireEncoding().size());
  }

  interest.set(interestLite, *this);
}