use bytes::Bytes;
mod varnumber;
mod implicit_sha256_digest_component;
mod name;
mod name_component;
pub use tlv::varnumber::VarNumber;
pub use tlv::implicit_sha256_digest_component::ImplicitSha256DigestComponent;
pub use tlv::name_component::NameComponent;
pub use tlv::name::Name;
#[derive(Debug, Copy, Clone, PartialEq)]
pub enum Type {
Interest = 0x05,
Data = 0x06,
Selectors = 0x09,
Nonce = 0x0a,
InterestLifetime = 0x0c,
MinSuffixComponents = 0x0d,
MaxSuffixComponents = 0x0e,
PublisherPublicKeyLocator = 0x0f,
Exclude = 0x10,
ChildSelector = 0x11,
MustBeFresh = 0x12,
Any = 0x13,
MetaInfo = 0x14,
Content = 0x15,
SignatureInfo = 0x16,
SignatureValue = 0x17,
ContentType = 0x18,
FreshnessPeriod = 0x19,
FinalBlockId = 0x1a,
SignatureType = 0x1b,
KeyLocator = 0x1c,
KeyDigest = 0x1d,
}
pub trait Tlv {
const TYPE: u64;
fn ty(&self) -> VarNumber {
Self::TYPE.into()
}
fn length(&self) -> VarNumber;
fn value(&self) -> Option<Bytes>;
fn size(&self) -> usize;
}