• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lightningnetwork / lnd / 16291181271

15 Jul 2025 10:47AM UTC coverage: 57.167% (-10.2%) from 67.349%
16291181271

Pull #9822

github

web-flow
Merge dabf3ae6a into 302551ade
Pull Request #9822: Refactor Payments Code (Head PR for refactor to make sure the itest pass)

650 of 2407 new or added lines in 25 files covered. (27.0%)

28129 existing lines in 454 files now uncovered.

98745 of 172731 relevant lines covered (57.17%)

1.77 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

60.0
/payments/db/codec.go
1
package paymentsdb
2

3
import (
4
        "encoding/binary"
5
        "io"
6

7
        "github.com/lightningnetwork/lnd/channeldb"
8
)
9

10
// Big endian is the preferred byte order, due to cursor scans over
11
// integer keys iterating in order.
12
var byteOrder = binary.BigEndian
13

14
// UnknownElementType is an alias for channeldb.UnknownElementType.
15
type UnknownElementType = channeldb.UnknownElementType
16

17
// ReadElement deserializes a single element from the provided io.Reader.
18
func ReadElement(r io.Reader, element interface{}) error {
3✔
19
        err := channeldb.ReadElement(r, element)
3✔
20
        switch {
3✔
21

22
        // Known to channeldb codec.
23
        case err == nil:
3✔
24
                return nil
3✔
25

26
        // Fail if error is not UnknownElementType.
27
        default:
3✔
28
                if _, ok := err.(UnknownElementType); !ok {
3✔
NEW
29
                        return err
×
NEW
30
                }
×
31
        }
32

33
        // Process any wtdb-specific extensions to the codec.
34
        switch e := element.(type) {
3✔
35

36
        case *paymentIndexType:
3✔
37
                if err := binary.Read(r, byteOrder, e); err != nil {
3✔
NEW
38
                        return err
×
NEW
39
                }
×
40

41
        // Type is still unknown to wtdb extensions, fail.
NEW
42
        default:
×
NEW
43
                return channeldb.NewUnknownElementType(
×
NEW
44
                        "ReadElement", element,
×
NEW
45
                )
×
46
        }
47

48
        return nil
3✔
49
}
50

51
// WriteElement serializes a single element into the provided io.Writer.
52
func WriteElement(w io.Writer, element interface{}) error {
3✔
53
        err := channeldb.WriteElement(w, element)
3✔
54
        switch {
3✔
55

56
        // Known to channeldb codec.
57
        case err == nil:
3✔
58
                return nil
3✔
59

60
        // Fail if error is not UnknownElementType.
61
        default:
3✔
62
                if _, ok := err.(UnknownElementType); !ok {
3✔
NEW
63
                        return err
×
NEW
64
                }
×
65
        }
66

67
        // Process any wtdb-specific extensions to the codec.
68
        switch e := element.(type) {
3✔
69

70
        case paymentIndexType:
3✔
71
                if err := binary.Write(w, byteOrder, e); err != nil {
3✔
NEW
72
                        return err
×
NEW
73
                }
×
74

75
        // Type is still unknown to wtdb extensions, fail.
NEW
76
        default:
×
NEW
77
                return channeldb.NewUnknownElementType(
×
NEW
78
                        "WriteElement", element,
×
NEW
79
                )
×
80
        }
81

82
        return nil
3✔
83
}
84

85
// WriteElements serializes a variadic list of elements into the given
86
// io.Writer.
87
func WriteElements(w io.Writer, elements ...interface{}) error {
3✔
88
        for _, element := range elements {
6✔
89
                if err := WriteElement(w, element); err != nil {
3✔
NEW
90
                        return err
×
NEW
91
                }
×
92
        }
93

94
        return nil
3✔
95
}
96

97
// ReadElements deserializes the provided io.Reader into a variadic list of
98
// target elements.
99
func ReadElements(r io.Reader, elements ...interface{}) error {
3✔
100
        for _, element := range elements {
6✔
101
                if err := ReadElement(r, element); err != nil {
3✔
NEW
102
                        return err
×
NEW
103
                }
×
104
        }
105

106
        return nil
3✔
107
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc