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

lightningnetwork / lnd / 16915531902

12 Aug 2025 04:59PM UTC coverage: 66.948%. First build
16915531902

Pull #10151

github

web-flow
Merge d106ffd13 into 4e0af2f49
Pull Request #10151: Refactor Payment PR 5

246 of 321 new or added lines in 20 files covered. (76.64%)

135783 of 202820 relevant lines covered (66.95%)

21592.59 hits per line

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

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

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

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

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

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

18
// ReadElement deserializes a single element from the provided io.Reader.
19
func ReadElement(r io.Reader, element interface{}) error {
14,124✔
20
        err := channeldb.ReadElement(r, element)
14,124✔
21
        switch {
14,124✔
22
        // Known to channeldb codec.
23
        case err == nil:
14,011✔
24
                return nil
14,011✔
25

26
        // Fail if error is not UnknownElementType.
27
        default:
116✔
28
                var unknownElementType UnknownElementType
116✔
29
                if !errors.As(err, &unknownElementType) {
116✔
NEW
30
                        return err
×
NEW
31
                }
×
32
        }
33

34
        // Process any wtdb-specific extensions to the codec.
35
        switch e := element.(type) {
116✔
36
        case *paymentIndexType:
116✔
37
                if err := binary.Read(r, byteOrder, e); err != nil {
116✔
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
116✔
49
}
50

51
// WriteElement serializes a single element into the provided io.Writer.
52
func WriteElement(w io.Writer, element interface{}) error {
1,778✔
53
        err := channeldb.WriteElement(w, element)
1,778✔
54
        switch {
1,778✔
55
        // Known to channeldb codec.
56
        case err == nil:
1,612✔
57
                return nil
1,612✔
58

59
        // Fail if error is not UnknownElementType.
60
        default:
169✔
61
                var unknownElementType UnknownElementType
169✔
62
                if !errors.As(err, &unknownElementType) {
169✔
NEW
63
                        return err
×
NEW
64
                }
×
65
        }
66

67
        // Process any wtdb-specific extensions to the codec.
68
        switch e := element.(type) {
169✔
69
        case paymentIndexType:
169✔
70
                if err := binary.Write(w, byteOrder, e); err != nil {
169✔
NEW
71
                        return err
×
NEW
72
                }
×
73

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

81
        return nil
169✔
82
}
83

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

93
        return nil
986✔
94
}
95

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

105
        return nil
10,179✔
106
}
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