2020-06-25 21:50:08 +02:00
|
|
|
package peer
|
|
|
|
|
2020-09-24 16:19:54 +02:00
|
|
|
import (
|
|
|
|
"net"
|
|
|
|
"time"
|
|
|
|
|
2021-08-03 21:18:37 +02:00
|
|
|
"github.com/lightningnetwork/lnd/htlcswitch"
|
|
|
|
"github.com/lightningnetwork/lnd/lnwallet"
|
2020-09-24 16:19:54 +02:00
|
|
|
"github.com/lightningnetwork/lnd/lnwire"
|
|
|
|
)
|
2020-06-25 21:50:08 +02:00
|
|
|
|
2021-08-03 21:18:37 +02:00
|
|
|
// 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)
|
|
|
|
}
|
|
|
|
|
2020-09-24 16:19:54 +02:00
|
|
|
// 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)
|
|
|
|
}
|