1 #ifndef NDNPH_PACKET_CONVENTION_HPP
2 #define NDNPH_PACKET_CONVENTION_HPP
4 #include "../port/random/port.hpp"
5 #include "../port/unixtime/port.hpp"
6 #include "../tlv/nni.hpp"
10 namespace convention {
22 return std::make_pair(ok, value);
44 , m_allowFallback(allowFallback) {}
53 t = port::UnixTime::now();
54 if (!port::UnixTime::valid(t)) {
55 if (m_allowFallback) {
58 return std::make_pair(
false, 0);
62 return std::make_pair(
true, t / m_unit);
73 template<u
int16_t tlvType>
89 template<u
int16_t tlvType>
93 return Component(region, tlvType, std::strlen(s),
reinterpret_cast<const uint8_t*
>(s));
97 return comp.
type() == tlvType;
102 if (room ==
nullptr) {
105 std::copy_n(comp.
value(), comp.
length(), room)[0] = 0;
106 return reinterpret_cast<const char*
>(room);
110 template<u
int16_t tlvType>
129 std::tie(ok, value) = gen.toNumber();
133 return create(region, value);
137 return parseImpl(comp).first;
141 return parseImpl(comp).second;
145 static std::pair<bool, uint64_t> parseImpl(
const Component& comp) {
150 return std::make_pair(ok, value);
static bool generate(uint8_t *output, size_t count)
Name component.
Definition: component.hpp:16
size_t length() const
Definition: component.hpp:145
uint16_t type() const
Definition: component.hpp:141
const uint8_t * value() const
Definition: component.hpp:149
size_t size() const
Definition: component.hpp:157
static Component from(Region ®ion, uint16_t type, const Arg &... arg)
Construct from TLV-TYPE, and several arguments to be encoded to TLV-VALUE.
Definition: component.hpp:75
const uint8_t * tlv() const
Definition: component.hpp:153
Decoded TLV.
Definition: decoder.hpp:13
static bool readTlv(Tlv &d, const uint8_t *input, const uint8_t *end)
Definition: decoder.hpp:46
Region-based memory allocator thats owns memory of NDNph objects.
Definition: region.hpp:9
uint8_t * alloc(size_t size)
Allocate a buffer with no alignment requirement.
Definition: region.hpp:27
Indicate that TLV-VALUE should be a random number.
Definition: convention.hpp:13
std::pair< bool, uint64_t > toNumber() const
Generate TLV-VALUE.
Definition: convention.hpp:19
Indicate that TLV-VALUE should be a timestamp.
Definition: convention.hpp:27
Unit
Definition: convention.hpp:29
@ Microseconds
Definition: convention.hpp:32
@ Milliseconds
Definition: convention.hpp:31
@ Seconds
Definition: convention.hpp:30
TimeValue(uint64_t t=0, uint64_t unit=Microseconds, bool allowFallback=false)
Constructor.
Definition: convention.hpp:41
std::pair< bool, uint64_t > toNumber() const
Generate TLV-VALUE.
Definition: convention.hpp:50
Definition: convention.hpp:74
static Component create(Region ®ion, const uint8_t digest[NDNPH_SHA256_LEN])
Definition: convention.hpp:76
static const uint8_t * parse(const Component &comp)
Definition: convention.hpp:84
static bool match(const Component &comp)
Definition: convention.hpp:80
Definition: convention.hpp:111
static Component create(Region ®ion, const G &gen, decltype(&G::toNumber)=nullptr)
Create with RandomValue or TimeValue.
Definition: convention.hpp:126
static bool match(const Component &comp)
Definition: convention.hpp:136
static Component create(Region ®ion, uint64_t value)
Create with specified value.
Definition: convention.hpp:114
static uint64_t parse(const Component &comp)
Definition: convention.hpp:140
Definition: convention.hpp:90
static const char * parse(const Component &comp, Region ®ion)
Definition: convention.hpp:100
static bool match(const Component &comp)
Definition: convention.hpp:96
static Component create(Region ®ion, const char *s)
Definition: convention.hpp:92
NonNegativeInteger encoding.
Definition: nni.hpp:118
static bool decode(const Decoder::Tlv &d, I &value, uint64_t max=Limit::max())
Decode NonNegativeInteger.
Definition: nni.hpp:127
#define NDNPH_SHA256_LEN
SHA256 digest length.
Definition: common.hpp:34