]> git.bitcoin.ninja Git - rust-lightning/commit
Serialization macro for TLV streams
authorJeffrey Czyz <jkczyz@gmail.com>
Fri, 24 Jun 2022 21:27:42 +0000 (16:27 -0500)
committerJeffrey Czyz <jkczyz@gmail.com>
Tue, 27 Sep 2022 22:48:43 +0000 (17:48 -0500)
commit16606afd7fef76ff546daafe6c018c77e3475203
tree9eaec5a0f3b0786034802734d766ab5a6083b8f2
parent3942efdd2ce1ab8911fb0b2c3feb9e5076ece1f7
Serialization macro for TLV streams

BOLT 12's offer message is encoded as a TLV stream (i.e., a sequence of
TLV records). impl_writeable_tlv_based can't be used because it writes
the overall length of the struct, whereas TLV streams only include the
length of each TLV record. Add a `tlv_stream` macro for defining structs
used in encoding.

TLV records containing a single variable-length type should not encode
the types length in the value since it is redundant. Add a wrapper type
that can be used within a TLV stream to support the correct behavior
during serialization and de-serialization.
lightning/src/util/ser.rs
lightning/src/util/ser_macros.rs