From 8245e356e5e941839229137244ea4513bf03aeb8 Mon Sep 17 00:00:00 2001 From: ziggie Date: Wed, 13 Aug 2025 15:06:44 +0200 Subject: [PATCH] paymentsdb: move serialization methods to kv_store file --- payments/db/kv_store.go | 89 ++++++++++++++++++++++++++++++++++++++++ payments/db/payment.go | 91 ----------------------------------------- 2 files changed, 89 insertions(+), 91 deletions(-) diff --git a/payments/db/kv_store.go b/payments/db/kv_store.go index afc7dec0a..343f77eea 100644 --- a/payments/db/kv_store.go +++ b/payments/db/kv_store.go @@ -7,6 +7,7 @@ import ( "errors" "fmt" "io" + "math" "sort" "sync" "time" @@ -2107,3 +2108,91 @@ func DeserializeRoute(r io.Reader) (route.Route, error) { return rt, nil } + +// serializeHTLCSettleInfo serializes the details of a settled htlc. +func serializeHTLCSettleInfo(w io.Writer, s *HTLCSettleInfo) error { + if _, err := w.Write(s.Preimage[:]); err != nil { + return err + } + + if err := serializeTime(w, s.SettleTime); err != nil { + return err + } + + return nil +} + +// deserializeHTLCSettleInfo deserializes the details of a settled htlc. +func deserializeHTLCSettleInfo(r io.Reader) (*HTLCSettleInfo, error) { + s := &HTLCSettleInfo{} + if _, err := io.ReadFull(r, s.Preimage[:]); err != nil { + return nil, err + } + + var err error + s.SettleTime, err = deserializeTime(r) + if err != nil { + return nil, err + } + + return s, nil +} + +// serializeHTLCFailInfo serializes the details of a failed htlc including the +// wire failure. +func serializeHTLCFailInfo(w io.Writer, f *HTLCFailInfo) error { + if err := serializeTime(w, f.FailTime); err != nil { + return err + } + + // Write failure. If there is no failure message, write an empty + // byte slice. + var messageBytes bytes.Buffer + if f.Message != nil { + err := lnwire.EncodeFailureMessage(&messageBytes, f.Message, 0) + if err != nil { + return err + } + } + if err := wire.WriteVarBytes(w, 0, messageBytes.Bytes()); err != nil { + return err + } + + return WriteElements(w, byte(f.Reason), f.FailureSourceIndex) +} + +// deserializeHTLCFailInfo deserializes the details of a failed htlc including +// the wire failure. +func deserializeHTLCFailInfo(r io.Reader) (*HTLCFailInfo, error) { + f := &HTLCFailInfo{} + var err error + f.FailTime, err = deserializeTime(r) + if err != nil { + return nil, err + } + + // Read failure. + failureBytes, err := wire.ReadVarBytes( + r, 0, math.MaxUint16, "failure", + ) + if err != nil { + return nil, err + } + if len(failureBytes) > 0 { + f.Message, err = lnwire.DecodeFailureMessage( + bytes.NewReader(failureBytes), 0, + ) + if err != nil { + return nil, err + } + } + + var reason byte + err = ReadElements(r, &reason, &f.FailureSourceIndex) + if err != nil { + return nil, err + } + f.Reason = HTLCFailReason(reason) + + return f, nil +} diff --git a/payments/db/payment.go b/payments/db/payment.go index 72338a4e5..2c5931a4d 100644 --- a/payments/db/payment.go +++ b/payments/db/payment.go @@ -4,12 +4,9 @@ import ( "bytes" "errors" "fmt" - "io" - "math" "time" "github.com/btcsuite/btcd/btcec/v2" - "github.com/btcsuite/btcd/wire" "github.com/davecgh/go-spew/spew" sphinx "github.com/lightningnetwork/lightning-onion" "github.com/lightningnetwork/lnd/lntypes" @@ -650,94 +647,6 @@ func (m *MPPayment) AllowMoreAttempts() (bool, error) { return true, nil } -// serializeHTLCSettleInfo serializes the details of a settled htlc. -func serializeHTLCSettleInfo(w io.Writer, s *HTLCSettleInfo) error { - if _, err := w.Write(s.Preimage[:]); err != nil { - return err - } - - if err := serializeTime(w, s.SettleTime); err != nil { - return err - } - - return nil -} - -// deserializeHTLCSettleInfo deserializes the details of a settled htlc. -func deserializeHTLCSettleInfo(r io.Reader) (*HTLCSettleInfo, error) { - s := &HTLCSettleInfo{} - if _, err := io.ReadFull(r, s.Preimage[:]); err != nil { - return nil, err - } - - var err error - s.SettleTime, err = deserializeTime(r) - if err != nil { - return nil, err - } - - return s, nil -} - -// serializeHTLCFailInfo serializes the details of a failed htlc including the -// wire failure. -func serializeHTLCFailInfo(w io.Writer, f *HTLCFailInfo) error { - if err := serializeTime(w, f.FailTime); err != nil { - return err - } - - // Write failure. If there is no failure message, write an empty - // byte slice. - var messageBytes bytes.Buffer - if f.Message != nil { - err := lnwire.EncodeFailureMessage(&messageBytes, f.Message, 0) - if err != nil { - return err - } - } - if err := wire.WriteVarBytes(w, 0, messageBytes.Bytes()); err != nil { - return err - } - - return WriteElements(w, byte(f.Reason), f.FailureSourceIndex) -} - -// deserializeHTLCFailInfo deserializes the details of a failed htlc including -// the wire failure. -func deserializeHTLCFailInfo(r io.Reader) (*HTLCFailInfo, error) { - f := &HTLCFailInfo{} - var err error - f.FailTime, err = deserializeTime(r) - if err != nil { - return nil, err - } - - // Read failure. - failureBytes, err := wire.ReadVarBytes( - r, 0, math.MaxUint16, "failure", - ) - if err != nil { - return nil, err - } - if len(failureBytes) > 0 { - f.Message, err = lnwire.DecodeFailureMessage( - bytes.NewReader(failureBytes), 0, - ) - if err != nil { - return nil, err - } - } - - var reason byte - err = ReadElements(r, &reason, &f.FailureSourceIndex) - if err != nil { - return nil, err - } - f.Reason = HTLCFailReason(reason) - - return f, nil -} - // generateSphinxPacket generates then encodes a sphinx packet which encodes // the onion route specified by the passed layer 3 route. The blob returned // from this function can immediately be included within an HTLC add packet to