routing: include the channel point of chan within edge update ntfn

This commit modifies the `ChannelEdgeUpdate` struct to include the
channel point itself within the notifications. Such a change improves
the notificaiton experience for callers as it allows them to filter out
update notifications based on a familiar object within the codebase: a
channel point.
This commit is contained in:
Olaoluwa Osuntokun 2017-03-13 20:32:59 -07:00
parent 61991a1c89
commit f6ab1390ed
No known key found for this signature in database
GPG Key ID: 9CC5B105D03521A2
2 changed files with 13 additions and 2 deletions

@ -18,8 +18,10 @@ import (
// TopologyChanges channel will be sent upon with new updates to the channel
// graph in real-time as they're encountered.
type TopologyClient struct {
// TopologyChanges is a recieve only channel that new channel graph
// TopologyChanges is a receive only channel that new channel graph
// updates will be sent over.
//
// TODO(roasbeef): chan for each update type instead?
TopologyChanges <-chan *TopologyChange
// Cancel is a function closure that should be executed when the client
@ -225,6 +227,10 @@ type ChannelEdgeUpdate struct {
// originally confirmed.
ChanID uint64
// ChanPoint is the outpoint which represents the multi-sig funding
// output for the channel.
ChanPoint wire.OutPoint
// Capacity is the capacity of the newly created channel.
Capacity btcutil.Amount
@ -300,6 +306,7 @@ func addToTopologyChange(graph *channeldb.ChannelGraph, update *TopologyChange,
edgeUpdate := &ChannelEdgeUpdate{
ChanID: chanID,
ChanPoint: edgeInfo.ChannelPoint,
TimeLockDelta: m.TimeLockDelta,
Capacity: edgeInfo.Capacity,
MinHTLC: btcutil.Amount(m.HtlcMinimumMsat),

@ -340,7 +340,7 @@ func TestEdgeUpdateNotification(t *testing.T) {
// First we'll create the utxo for the channel to be "closed"
const chanValue = btcutil.Amount(10000)
fundingTx, _, chanID := randChannelEdge(ctx, chanValue,
fundingTx, chanPoint, chanID := randChannelEdge(ctx, chanValue,
startingBlockHeight)
// We'll also add a record for the block that included our funding
@ -404,6 +404,10 @@ func TestEdgeUpdateNotification(t *testing.T) {
t.Fatalf("channel ID of edge doesn't match: "+
"expected %v, got %v", chanID.ToUint64(), edgeUpdate.ChanID)
}
if edgeUpdate.ChanPoint != chanPoint {
t.Fatalf("channel don't match: expected %v, got %v",
chanPoint, edgeUpdate.ChanPoint)
}
// TODO(roasbeef): this is a hack, needs to be removed
// after commitment fees are dynamic.
if edgeUpdate.Capacity != chanValue-5000 {