@ndn/packet
Version:
NDNts: Network Layer Packets
31 lines (30 loc) • 961 B
JavaScript
import { Encoder, EvDecoder } from "@ndn/tlv";
import { TT } from "./an_node.js";
import { Name } from "./name/mod_node.js";
const EVD = new EvDecoder("FwHint")
.add(TT.Name, (t, { decoder }) => t.push(decoder.decode(Name)), { repeat: true });
/** ForwardingHint in Interest. */
export class FwHint {
static decodeValue(vd) {
const t = new FwHint();
EVD.decodeValue(t.delegations, vd);
return t;
}
constructor(arg) {
if (Array.isArray(arg)) {
for (const name of arg) {
this.delegations.push(Name.from(name));
}
}
else if (Name.isNameLike(arg)) {
this.delegations = [Name.from(arg)];
}
else if (arg instanceof FwHint) {
this.delegations = [...arg.delegations];
}
}
delegations = [];
encodeTo(encoder) {
encoder.prependTlv(TT.ForwardingHint, Encoder.OmitEmpty, ...this.delegations);
}
}