UNPKG

@ndn/packet

Version:

NDNts: Network Layer Packets

37 lines (36 loc) 1.11 kB
import { EvDecoder, NNI } from "@ndn/tlv"; import { constrain } from "@ndn/util"; import { NackReason, TT } from "./an_node.js"; const EVD = new EvDecoder("NackHeader", TT.Nack) .add(TT.NackReason, (t, { nni }) => t.reason = nni); /** Nack header. */ export class NackHeader { get reason() { return this.reason_; } set reason(v) { this.reason_ = constrain(v, "NackReason"); } reason_ = 0; static decodeFrom(decoder) { return EVD.decode(new NackHeader(), decoder); } constructor(reason = 0) { this.reason = reason; } encodeTo(encoder) { encoder.prependTlv(TT.Nack, this.reason_ > 0 && [TT.NackReason, NNI(this.reason_)]); } } /** Nack packet. */ export class Nack { interest; get reason() { return this.header.reason; } set reason(v) { this.header.reason = v; } header; constructor(interest, header = NackReason.NoRoute) { this.interest = interest; if (typeof header === "number") { this.header = new NackHeader(header); } else { this.header = header; } } }