channelnotifier: let notifier take channel updates

This commit is contained in:
bitromortac committed 2026-02-20 10:43:52 +01:00
1 parent 19860bb9f6
commit a3d87f16b9
2 files changed
+60

No files matched your search

+17
View File
@@ -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)
}
}
+43
View File
@@ -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")
}
}