def decode_name_component(self, decoder: TlvDecoder) -> bytearray: """ Decode a name component :param decoder: Decoder :return: Value of name component """ savePosition = decoder.getOffset() type = decoder.readVarNumber() decoder.seek(savePosition) return decoder.readBlobTlv(type).tobytes()
def decode_nack(self, input: bytearray) -> (Name, NackReason): """ Decode NACK packet :param input: Data packet in NDN-TLV wire format :return: Name """ # decode name name = self.decode_interest(input[13:]) # decode nack reason decoder = TlvDecoder(input) decoder.readNestedTlvsStart(Tlv.LpPacket_LpPacket) decoder.readNestedTlvsStart(Tlv.LpPacket_Nack) try: decoder.readNestedTlvsStart(Tlv.LpPacket_NackReason) wire_reason = decoder.readVarNumber() reason = self.__nack_reason_enum[wire_reason] except ValueError: # happens when nack reason is not specified reason = NackReason.NOT_SET return (name, reason)