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

lightningnetwork / lnd / 12312390362

13 Dec 2024 08:44AM UTC coverage: 57.458% (+8.5%) from 48.92%
12312390362

Pull #9343

github

ellemouton
fn: rework the ContextGuard and add tests

In this commit, the ContextGuard struct is re-worked such that the
context that its new main WithCtx method provides is cancelled in sync
with a parent context being cancelled or with it's quit channel being
cancelled. Tests are added to assert the behaviour. In order for the
close of the quit channel to be consistent with the cancelling of the
derived context, the quit channel _must_ be contained internal to the
ContextGuard so that callers are only able to close the channel via the
exposed Quit method which will then take care to first cancel any
derived context that depend on the quit channel before returning.
Pull Request #9343: fn: expand the ContextGuard and add tests

101853 of 177264 relevant lines covered (57.46%)

24972.93 hits per line

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

68.75
/lnwire/pong.go
1
package lnwire
2

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

9
// MaxPongBytes is the maximum number of extra bytes a pong can be requested to
10
// send. The type of the message (19) takes 2 bytes, the length field takes up
11
// 2 bytes, leaving 65531 bytes.
12
const MaxPongBytes = 65531
13

14
// ErrMaxPongBytesExceeded indicates that the NumPongBytes field from the ping
15
// message has exceeded MaxPongBytes.
16
var ErrMaxPongBytesExceeded = fmt.Errorf("pong bytes exceeded")
17

18
// PongPayload is a set of opaque bytes sent in response to a ping message.
19
type PongPayload []byte
20

21
// Pong defines a message which is the direct response to a received Ping
22
// message. A Pong reply indicates that a connection is still active. The Pong
23
// reply to a Ping message should contain the nonce carried in the original
24
// Pong message.
25
type Pong struct {
26
        // PongBytes is a set of opaque bytes that corresponds to the
27
        // NumPongBytes defined in the ping message that this pong is
28
        // replying to.
29
        PongBytes PongPayload
30
}
31

32
// NewPong returns a new Pong message.
33
func NewPong(pongBytes []byte) *Pong {
×
34
        return &Pong{
×
35
                PongBytes: pongBytes,
×
36
        }
×
37
}
×
38

39
// A compile time check to ensure Pong implements the lnwire.Message interface.
40
var _ Message = (*Pong)(nil)
41

42
// Decode deserializes a serialized Pong message stored in the passed io.Reader
43
// observing the specified protocol version.
44
//
45
// This is part of the lnwire.Message interface.
46
func (p *Pong) Decode(r io.Reader, pver uint32) error {
109✔
47
        return ReadElements(r,
109✔
48
                &p.PongBytes,
109✔
49
        )
109✔
50
}
109✔
51

52
// Encode serializes the target Pong into the passed io.Writer observing the
53
// protocol version specified.
54
//
55
// This is part of the lnwire.Message interface.
56
func (p *Pong) Encode(w *bytes.Buffer, pver uint32) error {
103✔
57
        return WritePongPayload(w, p.PongBytes)
103✔
58
}
103✔
59

60
// MsgType returns the integer uniquely identifying this message type on the
61
// wire.
62
//
63
// This is part of the lnwire.Message interface.
64
func (p *Pong) MsgType() MessageType {
103✔
65
        return MsgPong
103✔
66
}
103✔
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