channelnotifier: let notifier take channel updates
This commit is contained in:
2 files changed
+60
No files matched your search
@@ -72,6 +72,12 @@ type ClosedChannelEvent struct {
|
||||
CloseSummary *channeldb.ChannelCloseSummary
|
||||
}
|
||||
|
||||
// ChannelUpdateEvent represents a new event where a channel's state is updated.
|
||||
type ChannelUpdateEvent struct {
|
||||
// Channel is the channel that has been updated.
|
||||
Channel *channeldb.OpenChannel
|
||||
}
|
||||
|
||||
// FullyResolvedChannelEvent represents a new event where a channel becomes
|
||||
// fully resolved.
|
||||
type FullyResolvedChannelEvent struct {
|
||||
@@ -238,3 +244,14 @@ func (c *ChannelNotifier) NotifyInactiveChannelEvent(chanPoint wire.OutPoint) {
|
||||
log.Warnf("Unable to send inactive channel update: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// NotifyChannelUpdateEvent notifies subscribers that a channel's state has been
|
||||
// updated.
|
||||
func (c *ChannelNotifier) NotifyChannelUpdateEvent(
|
||||
channel *channeldb.OpenChannel) {
|
||||
|
||||
event := ChannelUpdateEvent{Channel: channel}
|
||||
if err := c.ntfnServer.SendUpdate(event); err != nil {
|
||||
log.Warnf("Unable to send channel update: %v", err)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package channelnotifier
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/lightningnetwork/lnd/channeldb"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
// TestChannelUpdateEvent tests that channel update events are properly
|
||||
// notified to subscribers.
|
||||
func TestChannelUpdateEvent(t *testing.T) {
|
||||
// Initialize the notification server.
|
||||
ntfnServer := New(nil)
|
||||
require.NoError(t, ntfnServer.Start())
|
||||
|
||||
defer func() {
|
||||
require.NoError(t, ntfnServer.Stop())
|
||||
}()
|
||||
|
||||
// Subscribe to channel events.
|
||||
sub, err := ntfnServer.SubscribeChannelEvents()
|
||||
require.NoError(t, err)
|
||||
defer sub.Cancel()
|
||||
|
||||
// Create a mock channel state.
|
||||
channel := &channeldb.OpenChannel{}
|
||||
|
||||
// Notify the server of a channel update event.
|
||||
ntfnServer.NotifyChannelUpdateEvent(channel)
|
||||
|
||||
// Consume the event.
|
||||
select {
|
||||
case event := <-sub.Updates():
|
||||
updateEvent, ok := event.(ChannelUpdateEvent)
|
||||
require.True(t, ok)
|
||||
require.Equal(t, channel, updateEvent.Channel)
|
||||
|
||||
case <-time.After(time.Second):
|
||||
t.Fatalf("expected to receive channel update event")
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user