lnd/peer/interfaces.go
eugene 23a4fad4ac
htlcswitch+peer: CreateAndAddLink in switch, add messageSwitch to peer
This commit allows the peer to be tested without relying on a raw
htlcswitch.Switch pointer. This is accomplished by using a messageSwitch
interface and adding the CreateAndAddLink method to the
htlcswitch.Switch.
2021-08-10 17:15:52 -04:00

84 lines
2.5 KiB
Go

package peer
import (
"net"
"time"
"github.com/lightningnetwork/lnd/htlcswitch"
"github.com/lightningnetwork/lnd/lnwallet"
"github.com/lightningnetwork/lnd/lnwire"
)
// messageSwitch is an interface that abstracts managing the lifecycle of
// abstract links. This is intended for peer package usage only.
type messageSwitch interface {
// BestHeight returns the best height known to the messageSwitch.
BestHeight() uint32
// CircuitModifier returns a reference to the messageSwitch's internal
// CircuitModifier which abstracts the paths payments take and allows
// modifying them.
CircuitModifier() htlcswitch.CircuitModifier
// RemoveLink removes an abstract link given a ChannelID.
RemoveLink(cid lnwire.ChannelID)
// CreateAndAddLink creates an abstract link in the messageSwitch given
// a ChannelLinkConfig and raw LightningChannel pointer.
CreateAndAddLink(cfg htlcswitch.ChannelLinkConfig,
lnChan *lnwallet.LightningChannel) error
// GetLinksByInterface retrieves abstract links (represented by the
// ChannelUpdateHandler interface) based on the provided public key.
GetLinksByInterface(pub [33]byte) ([]htlcswitch.ChannelUpdateHandler,
error)
}
// LinkUpdater is an interface implemented by most messages in BOLT 2 that are
// allowed to update the channel state.
type LinkUpdater interface {
// TargetChanID returns the channel id of the link for which this message
// is intended.
TargetChanID() lnwire.ChannelID
}
// MessageConn is an interface implemented by anything that delivers
// an lnwire.Message using a net.Conn interface.
type MessageConn interface {
// RemoteAddr returns the remote address on the other end of the connection.
RemoteAddr() net.Addr
// LocalAddr returns the local address on our end of the connection.
LocalAddr() net.Addr
// Read reads bytes from the connection.
Read([]byte) (int, error)
// Write writes bytes to the connection.
Write([]byte) (int, error)
// SetDeadline sets the deadline for the connection.
SetDeadline(time.Time) error
// SetReadDeadline sets the read deadline.
SetReadDeadline(time.Time) error
// SetWriteDeadline sets the write deadline.
SetWriteDeadline(time.Time) error
// Close closes the connection.
Close() error
// Flush attempts a flush.
Flush() (int, error)
// WriteMessage writes the message.
WriteMessage([]byte) error
// ReadNextHeader reads the next header.
ReadNextHeader() (uint32, error)
// ReadNextBody reads the next body.
ReadNextBody([]byte) ([]byte, error)
}