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

lightningnetwork / lnd / 13999301927

21 Mar 2025 07:18PM UTC coverage: 68.989% (+9.9%) from 59.126%
13999301927

push

github

web-flow
Merge pull request #9623 from Roasbeef/size-msg-test-msg

Size msg test msg

1461 of 1572 new or added lines in 43 files covered. (92.94%)

28 existing lines in 6 files now uncovered.

132898 of 192637 relevant lines covered (68.99%)

22200.59 hits per line

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

65.45
/lnwire/update_fulfill_htlc.go
1
package lnwire
2

3
import (
4
        "bytes"
5
        "io"
6
)
7

8
// UpdateFulfillHTLC is sent by Alice to Bob when she wishes to settle a
9
// particular HTLC referenced by its HTLCKey within a specific active channel
10
// referenced by ChannelPoint.  A subsequent CommitSig message will be sent by
11
// Alice to "lock-in" the removal of the specified HTLC, possible containing a
12
// batch signature covering several settled HTLC's.
13
type UpdateFulfillHTLC struct {
14
        // ChanID references an active channel which holds the HTLC to be
15
        // settled.
16
        ChanID ChannelID
17

18
        // ID denotes the exact HTLC stage within the receiving node's
19
        // commitment transaction to be removed.
20
        ID uint64
21

22
        // PaymentPreimage is the R-value preimage required to fully settle an
23
        // HTLC.
24
        PaymentPreimage [32]byte
25

26
        // CustomRecords maps TLV types to byte slices, storing arbitrary data
27
        // intended for inclusion in the ExtraData field.
28
        CustomRecords CustomRecords
29

30
        // ExtraData is the set of data that was appended to this message to
31
        // fill out the full maximum transport message size. These fields can
32
        // be used to specify optional data such as custom TLV fields.
33
        ExtraData ExtraOpaqueData
34
}
35

36
// NewUpdateFulfillHTLC returns a new empty UpdateFulfillHTLC.
37
func NewUpdateFulfillHTLC(chanID ChannelID, id uint64,
38
        preimage [32]byte) *UpdateFulfillHTLC {
×
39

×
40
        return &UpdateFulfillHTLC{
×
41
                ChanID:          chanID,
×
42
                ID:              id,
×
43
                PaymentPreimage: preimage,
×
44
        }
×
45
}
×
46

47
// A compile time check to ensure UpdateFulfillHTLC implements the
48
// lnwire.Message interface.
49
var _ Message = (*UpdateFulfillHTLC)(nil)
50

51
// A compile time check to ensure UpdateFulfillHTLC implements the
52
// lnwire.SizeableMessage interface.
53
var _ SizeableMessage = (*UpdateFulfillHTLC)(nil)
54

55
// Decode deserializes a serialized UpdateFulfillHTLC message stored in the
56
// passed io.Reader observing the specified protocol version.
57
//
58
// This is part of the lnwire.Message interface.
59
func (c *UpdateFulfillHTLC) Decode(r io.Reader, pver uint32) error {
1,066✔
60
        // msgExtraData is a temporary variable used to read the message extra
1,066✔
61
        // data field from the reader.
1,066✔
62
        var msgExtraData ExtraOpaqueData
1,066✔
63

1,066✔
64
        if err := ReadElements(r,
1,066✔
65
                &c.ChanID,
1,066✔
66
                &c.ID,
1,066✔
67
                c.PaymentPreimage[:],
1,066✔
68
                &msgExtraData,
1,066✔
69
        ); err != nil {
1,070✔
70
                return err
4✔
71
        }
4✔
72

73
        // Extract custom records from the extra data field.
74
        customRecords, _, extraData, err := ParseAndExtractCustomRecords(
1,062✔
75
                msgExtraData,
1,062✔
76
        )
1,062✔
77
        if err != nil {
1,075✔
78
                return err
13✔
79
        }
13✔
80

81
        c.CustomRecords = customRecords
1,049✔
82
        c.ExtraData = extraData
1,049✔
83

1,049✔
84
        return nil
1,049✔
85
}
86

87
// Encode serializes the target UpdateFulfillHTLC into the passed io.Writer
88
// observing the protocol version specified.
89
//
90
// This is part of the lnwire.Message interface.
91
func (c *UpdateFulfillHTLC) Encode(w *bytes.Buffer, pver uint32) error {
1,512✔
92
        if err := WriteChannelID(w, c.ChanID); err != nil {
1,512✔
93
                return err
×
94
        }
×
95

96
        if err := WriteUint64(w, c.ID); err != nil {
1,512✔
97
                return err
×
98
        }
×
99

100
        if err := WriteBytes(w, c.PaymentPreimage[:]); err != nil {
1,512✔
101
                return err
×
102
        }
×
103

104
        // Combine the custom records and the extra data, then encode the
105
        // result as a byte slice.
106
        extraData, err := MergeAndEncode(nil, c.ExtraData, c.CustomRecords)
1,512✔
107
        if err != nil {
1,512✔
108
                return err
×
109
        }
×
110

111
        return WriteBytes(w, extraData)
1,512✔
112
}
113

114
// MsgType returns the integer uniquely identifying this message type on the
115
// wire.
116
//
117
// This is part of the lnwire.Message interface.
118
func (c *UpdateFulfillHTLC) MsgType() MessageType {
2,222✔
119
        return MsgUpdateFulfillHTLC
2,222✔
120
}
2,222✔
121

122
// SerializedSize returns the serialized size of the message in bytes.
123
//
124
// This is part of the lnwire.SizeableMessage interface.
NEW
125
func (c *UpdateFulfillHTLC) SerializedSize() (uint32, error) {
×
NEW
126
        return MessageSerializedSize(c)
×
NEW
127
}
×
128

129
// TargetChanID returns the channel id of the link for which this message is
130
// intended.
131
//
132
// NOTE: Part of peer.LinkUpdater interface.
133
func (c *UpdateFulfillHTLC) TargetChanID() ChannelID {
3✔
134
        return c.ChanID
3✔
135
}
3✔
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