mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 01:43:16 +01:00
tlv: make TlvType method for TlvType interface public
With this change, callers can now examine a struct instance of the `TlvType` instance to figure out programmatically which integer type is maps to. This'll be useful when decoding optional TLV types into a wire struct (knowing when to set it to Some vs None).
This commit is contained in:
parent
66cf4396a2
commit
09afc92215
@ -20,10 +20,12 @@ package tlv
|
||||
|
||||
type tlvType{{ $index }} struct{}
|
||||
|
||||
func (t *tlvType{{ $index }}) typeVal() Type {
|
||||
func (t *tlvType{{ $index }}) TypeVal() Type {
|
||||
return {{ $index }}
|
||||
}
|
||||
|
||||
func (t *tlvType{{ $index }}) tlv() {}
|
||||
|
||||
type TlvType{{ $index }} = *tlvType{{ $index }}
|
||||
{{- end }}
|
||||
`
|
||||
|
@ -62,7 +62,7 @@ func (t *RecordT[T, V]) Record() Record {
|
||||
tlvRecord, ok := any(&t.Val).(RecordProducer)
|
||||
if !ok {
|
||||
return MakePrimitiveRecord(
|
||||
t.recordType.typeVal(), &t.Val,
|
||||
t.recordType.TypeVal(), &t.Val,
|
||||
)
|
||||
}
|
||||
|
||||
@ -72,7 +72,7 @@ func (t *RecordT[T, V]) Record() Record {
|
||||
|
||||
return Record{
|
||||
value: ogRecord.value,
|
||||
typ: t.recordType.typeVal(),
|
||||
typ: t.recordType.TypeVal(),
|
||||
staticSize: ogRecord.staticSize,
|
||||
sizeFunc: ogRecord.sizeFunc,
|
||||
encoder: ogRecord.encoder,
|
||||
|
@ -5,7 +5,13 @@ import "fmt"
|
||||
// TlvType is an interface used to enable binding the integer type of a TLV
|
||||
// record to the type at compile time.
|
||||
type TlvType interface {
|
||||
typeVal() Type
|
||||
// TypeVal returns the integer TLV type that this TlvType struct
|
||||
// instance maps to.
|
||||
TypeVal() Type
|
||||
|
||||
// tlv is an internal method to make this a "sealed" interface, meaning
|
||||
// only this package can declare new instances.
|
||||
tlv()
|
||||
}
|
||||
|
||||
//go:generate go run internal/gen/gen_tlv_types.go -o tlv_types_generated.go
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user