@@ -21,6 +21,7 @@ import (
2121 "github.com/lightninglabs/loop/loopd/perms"
2222 "github.com/lightninglabs/loop/loopdb"
2323 loop_looprpc "github.com/lightninglabs/loop/looprpc"
24+ "github.com/lightninglabs/loop/notifications"
2425 loop_swaprpc "github.com/lightninglabs/loop/swapserverrpc"
2526 "github.com/lightninglabs/loop/sweepbatcher"
2627 "github.com/lightningnetwork/lnd/clock"
@@ -498,21 +499,29 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
498499 }
499500 }
500501
502+ // Start the notification manager.
503+ notificationCfg := & notifications.Config {
504+ Client : loop_swaprpc .NewSwapServerClient (swapClient .Conn ),
505+ FetchL402 : swapClient .Server .FetchL402 ,
506+ }
507+ notificationManager := notifications .NewManager (notificationCfg )
508+
501509 var (
502510 reservationManager * reservation.Manager
503511 instantOutManager * instantout.Manager
504512 )
513+
505514 // Create the reservation and instantout managers.
506515 if d .cfg .EnableExperimental {
507516 reservationStore := reservation .NewSQLStore (
508517 loopdb.NewTypedStore [reservation.Querier ](baseDb ),
509518 )
510519 reservationConfig := & reservation.Config {
511- Store : reservationStore ,
512- Wallet : d .lnd .WalletKit ,
513- ChainNotifier : d .lnd .ChainNotifier ,
514- ReservationClient : reservationClient ,
515- FetchL402 : swapClient . Server . FetchL402 ,
520+ Store : reservationStore ,
521+ Wallet : d .lnd .WalletKit ,
522+ ChainNotifier : d .lnd .ChainNotifier ,
523+ ReservationClient : reservationClient ,
524+ NotificationManager : notificationManager ,
516525 }
517526
518527 reservationManager = reservation .NewManager (
@@ -621,6 +630,29 @@ func (d *Daemon) initialize(withMacaroonService bool) error {
621630 log .Info ("Liquidity manager stopped" )
622631 }()
623632
633+ d .wg .Add (1 )
634+ initChan := make (chan struct {})
635+ go func () {
636+ defer d .wg .Done ()
637+
638+ log .Info ("Starting notification manager" )
639+ err := notificationManager .Run (d .mainCtx , initChan )
640+ if err != nil {
641+ d .internalErrChan <- err
642+ log .Errorf ("Notification manager stopped: %v" , err )
643+ }
644+ }()
645+
646+ select {
647+ case <- time .After (2 * time .Minute ):
648+ return fmt .Errorf ("notification manager not ready" )
649+
650+ case <- d .mainCtx .Done ():
651+ return nil
652+
653+ case <- initChan :
654+ }
655+
624656 // Start the reservation manager.
625657 if d .reservationManager != nil {
626658 d .wg .Add (1 )
0 commit comments