mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-07-22 11:02:36 +02:00
peer+lnwire: add LinkUpdater iface and impl on relevant msgs
Removes longstanding TODO to simplify parsing of target chanid.
This commit is contained in:
@ -1,6 +1,8 @@
|
|||||||
package lnwire
|
package lnwire
|
||||||
|
|
||||||
import "io"
|
import (
|
||||||
|
"io"
|
||||||
|
)
|
||||||
|
|
||||||
// CommitSig is sent by either side to stage any pending HTLC's in the
|
// CommitSig is sent by either side to stage any pending HTLC's in the
|
||||||
// receiver's pending set into a new commitment state. Implicitly, the new
|
// receiver's pending set into a new commitment state. Implicitly, the new
|
||||||
@ -83,3 +85,11 @@ func (c *CommitSig) MaxPayloadLength(uint32) uint32 {
|
|||||||
// 32 + 64 + 2 + max_allowed_htlcs
|
// 32 + 64 + 2 + max_allowed_htlcs
|
||||||
return MaxMessagePayload
|
return MaxMessagePayload
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TargetChanID returns the channel id of the link for which this message is
|
||||||
|
// intended.
|
||||||
|
//
|
||||||
|
// NOTE: Part of lnd.LinkUpdater interface.
|
||||||
|
func (c *CommitSig) TargetChanID() ChannelID {
|
||||||
|
return c.ChanID
|
||||||
|
}
|
||||||
|
@ -81,3 +81,11 @@ func (c *RevokeAndAck) MaxPayloadLength(uint32) uint32 {
|
|||||||
// 32 + 32 + 33
|
// 32 + 32 + 33
|
||||||
return 97
|
return 97
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TargetChanID returns the channel id of the link for which this message is
|
||||||
|
// intended.
|
||||||
|
//
|
||||||
|
// NOTE: Part of lnd.LinkUpdater interface.
|
||||||
|
func (c *RevokeAndAck) TargetChanID() ChannelID {
|
||||||
|
return c.ChanID
|
||||||
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package lnwire
|
package lnwire
|
||||||
|
|
||||||
import "io"
|
import (
|
||||||
|
"io"
|
||||||
|
)
|
||||||
|
|
||||||
// OnionPacketSize is the size of the serialized Sphinx onion packet included
|
// OnionPacketSize is the size of the serialized Sphinx onion packet included
|
||||||
// in each UpdateAddHTLC message. The breakdown of the onion packet is as
|
// in each UpdateAddHTLC message. The breakdown of the onion packet is as
|
||||||
@ -107,3 +109,11 @@ func (c *UpdateAddHTLC) MaxPayloadLength(uint32) uint32 {
|
|||||||
// 1450
|
// 1450
|
||||||
return 32 + 8 + 4 + 8 + 32 + 1366
|
return 32 + 8 + 4 + 8 + 32 + 1366
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TargetChanID returns the channel id of the link for which this message is
|
||||||
|
// intended.
|
||||||
|
//
|
||||||
|
// NOTE: Part of lnd.LinkUpdater interface.
|
||||||
|
func (c *UpdateAddHTLC) TargetChanID() ChannelID {
|
||||||
|
return c.ChanID
|
||||||
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package lnwire
|
package lnwire
|
||||||
|
|
||||||
import "io"
|
import (
|
||||||
|
"io"
|
||||||
|
)
|
||||||
|
|
||||||
// OpaqueReason is an opaque encrypted byte slice that encodes the exact
|
// OpaqueReason is an opaque encrypted byte slice that encodes the exact
|
||||||
// failure reason and additional some supplemental data. The contents of this
|
// failure reason and additional some supplemental data. The contents of this
|
||||||
@ -83,3 +85,11 @@ func (c *UpdateFailHTLC) MaxPayloadLength(uint32) uint32 {
|
|||||||
|
|
||||||
return length
|
return length
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TargetChanID returns the channel id of the link for which this message is
|
||||||
|
// intended.
|
||||||
|
//
|
||||||
|
// NOTE: Part of lnd.LinkUpdater interface.
|
||||||
|
func (c *UpdateFailHTLC) TargetChanID() ChannelID {
|
||||||
|
return c.ChanID
|
||||||
|
}
|
||||||
|
@ -73,3 +73,11 @@ func (c *UpdateFailMalformedHTLC) MaxPayloadLength(uint32) uint32 {
|
|||||||
// 32 + 8 + 32 + 2
|
// 32 + 8 + 32 + 2
|
||||||
return 74
|
return 74
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TargetChanID returns the channel id of the link for which this message is
|
||||||
|
// intended.
|
||||||
|
//
|
||||||
|
// NOTE: Part of lnd.LinkUpdater interface.
|
||||||
|
func (c *UpdateFailMalformedHTLC) TargetChanID() ChannelID {
|
||||||
|
return c.ChanID
|
||||||
|
}
|
||||||
|
@ -68,3 +68,11 @@ func (c *UpdateFee) MaxPayloadLength(uint32) uint32 {
|
|||||||
// 32 + 4
|
// 32 + 4
|
||||||
return 36
|
return 36
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TargetChanID returns the channel id of the link for which this message is
|
||||||
|
// intended.
|
||||||
|
//
|
||||||
|
// NOTE: Part of lnd.LinkUpdater interface.
|
||||||
|
func (c *UpdateFee) TargetChanID() ChannelID {
|
||||||
|
return c.ChanID
|
||||||
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package lnwire
|
package lnwire
|
||||||
|
|
||||||
import "io"
|
import (
|
||||||
|
"io"
|
||||||
|
)
|
||||||
|
|
||||||
// UpdateFulfillHTLC is sent by Alice to Bob when she wishes to settle a
|
// UpdateFulfillHTLC is sent by Alice to Bob when she wishes to settle a
|
||||||
// particular HTLC referenced by its HTLCKey within a specific active channel
|
// particular HTLC referenced by its HTLCKey within a specific active channel
|
||||||
@ -76,3 +78,11 @@ func (c *UpdateFulfillHTLC) MaxPayloadLength(uint32) uint32 {
|
|||||||
// 32 + 8 + 32
|
// 32 + 8 + 32
|
||||||
return 72
|
return 72
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TargetChanID returns the channel id of the link for which this message is
|
||||||
|
// intended.
|
||||||
|
//
|
||||||
|
// NOTE: Part of lnd.LinkUpdater interface.
|
||||||
|
func (c *UpdateFulfillHTLC) TargetChanID() ChannelID {
|
||||||
|
return c.ChanID
|
||||||
|
}
|
||||||
|
42
peer.go
42
peer.go
@ -1038,7 +1038,7 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
isChanUpdate bool
|
isLinkUpdate bool
|
||||||
targetChan lnwire.ChannelID
|
targetChan lnwire.ChannelID
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1105,7 +1105,7 @@ out:
|
|||||||
// If not we hand the error to the channel link for
|
// If not we hand the error to the channel link for
|
||||||
// this channel.
|
// this channel.
|
||||||
default:
|
default:
|
||||||
isChanUpdate = true
|
isLinkUpdate = true
|
||||||
targetChan = msg.ChanID
|
targetChan = msg.ChanID
|
||||||
|
|
||||||
// Also marked this channel as failed, so we
|
// Also marked this channel as failed, so we
|
||||||
@ -1114,32 +1114,14 @@ out:
|
|||||||
p.failedChannels[targetChan] = struct{}{}
|
p.failedChannels[targetChan] = struct{}{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(roasbeef): create ChanUpdater interface for the below
|
|
||||||
case *lnwire.UpdateAddHTLC:
|
|
||||||
isChanUpdate = true
|
|
||||||
targetChan = msg.ChanID
|
|
||||||
case *lnwire.UpdateFulfillHTLC:
|
|
||||||
isChanUpdate = true
|
|
||||||
targetChan = msg.ChanID
|
|
||||||
case *lnwire.UpdateFailMalformedHTLC:
|
|
||||||
isChanUpdate = true
|
|
||||||
targetChan = msg.ChanID
|
|
||||||
case *lnwire.UpdateFailHTLC:
|
|
||||||
isChanUpdate = true
|
|
||||||
targetChan = msg.ChanID
|
|
||||||
case *lnwire.RevokeAndAck:
|
|
||||||
isChanUpdate = true
|
|
||||||
targetChan = msg.ChanID
|
|
||||||
case *lnwire.CommitSig:
|
|
||||||
isChanUpdate = true
|
|
||||||
targetChan = msg.ChanID
|
|
||||||
case *lnwire.UpdateFee:
|
|
||||||
isChanUpdate = true
|
|
||||||
targetChan = msg.ChanID
|
|
||||||
case *lnwire.ChannelReestablish:
|
case *lnwire.ChannelReestablish:
|
||||||
isChanUpdate = true
|
isLinkUpdate = true
|
||||||
targetChan = msg.ChanID
|
targetChan = msg.ChanID
|
||||||
|
|
||||||
|
case LinkUpdater:
|
||||||
|
isLinkUpdate = true
|
||||||
|
targetChan = msg.TargetChanID()
|
||||||
|
|
||||||
case *lnwire.ChannelUpdate,
|
case *lnwire.ChannelUpdate,
|
||||||
*lnwire.ChannelAnnouncement,
|
*lnwire.ChannelAnnouncement,
|
||||||
*lnwire.NodeAnnouncement,
|
*lnwire.NodeAnnouncement,
|
||||||
@ -1157,7 +1139,7 @@ out:
|
|||||||
"%v", uint16(msg.MsgType()), p)
|
"%v", uint16(msg.MsgType()), p)
|
||||||
}
|
}
|
||||||
|
|
||||||
if isChanUpdate {
|
if isLinkUpdate {
|
||||||
// If this is a channel update, then we need to feed it
|
// If this is a channel update, then we need to feed it
|
||||||
// into the channel's in-order message stream.
|
// into the channel's in-order message stream.
|
||||||
chanStream, ok := chanMsgStreams[targetChan]
|
chanStream, ok := chanMsgStreams[targetChan]
|
||||||
@ -2543,4 +2525,12 @@ func (p *peer) StartTime() time.Time {
|
|||||||
return p.startTime
|
return p.startTime
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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
|
||||||
|
}
|
||||||
|
|
||||||
// TODO(roasbeef): make all start/stop mutexes a CAS
|
// TODO(roasbeef): make all start/stop mutexes a CAS
|
||||||
|
Reference in New Issue
Block a user