From 628c5e5b7b709617f4b39bf320f1668599da60dd Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Wed, 26 Mar 2025 00:12:23 +0100 Subject: [PATCH] eth/connmanager: get sync status Signed-off-by: Csaba Kiraly --- eth/backend.go | 2 +- eth/connmanager.go | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/eth/backend.go b/eth/backend.go index 39b1d8e6bc..bf2ac1d5ed 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -405,7 +405,7 @@ func (s *Ethereum) Start() error { s.handler.Start(s.p2pServer.MaxPeers) // Start the connection manager - s.connman.Start(s.p2pServer) + s.connman.Start(s.p2pServer, s.Synced) // start log indexer s.filterMaps.Start() diff --git a/eth/connmanager.go b/eth/connmanager.go index b4324b9b23..4d04ec8e6b 100644 --- a/eth/connmanager.go +++ b/eth/connmanager.go @@ -49,6 +49,7 @@ type connManager struct { connmanConfig srv *p2p.Server peersFunc getPeersFunc + syncFunc getSyncFunc // the peerDrop timer introduces churn if we are close to limit capacity peerDropTimer *mclock.Alarm @@ -62,6 +63,9 @@ type connManager struct { // callback type to get the list of connected peers. type getPeersFunc func() []*p2p.Peer +// callback type to get sync status. +type getSyncFunc func() bool + type connmanConfig struct { maxDialPeers int // maximum number of dialed peers log log.Logger @@ -97,10 +101,11 @@ func newConnManager(config *connmanConfig) *connManager { return cm } -func (cm *connManager) Start(srv *p2p.Server) { +func (cm *connManager) Start(srv *p2p.Server, syncFunc getSyncFunc) { cm.wg.Add(1) cm.srv = srv cm.peersFunc = srv.Peers + cm.syncFunc = syncFunc cm.sub = srv.SubscribeEvents(cm.peerEventCh) go cm.loop() }