private void TryUpdateSyncTimes(eth_syncing syncing) { lock (_locker) { var currentSyncBlockNr = syncing.TryGetCurrentBlock(); if (lastSyncBlock >= currentSyncBlockNr || currentSyncBlockNr <= 0) { return; } if (syncTimes.Count == 0 && lastSyncBlock <= 0) { syncTimesStopWatch.Restart(); lastSyncBlock = currentSyncBlockNr; return; } syncTimes.Add(((float)(currentSyncBlockNr - lastSyncBlock) / syncTimesStopWatch.ElapsedMilliseconds) * 1000); syncTimesStopWatch.Restart(); if (syncTimes.Count > _cfg.syncTimesAverageCount) { syncTimes.RemoveAt(0); } averageSyncSpeed = (long)syncTimes.Average(); lastSyncBlock = currentSyncBlockNr; } }
public async Task <bool> TryUpdatePrivateSyncing() { eth_syncing response; try { var connectionString = _cfg.GetPrivateGethConnectionString(); response = await FetchGethSyncResponse(connectionString); } catch (Exception ex) { Console.WriteLine("Failed to fetch private geth block height."); Console.WriteLine(ex.JsonSerializeAsPrettyException()); return(false); } if (response == null || response.result is bool) { return(false); } var nr = response.TryGetCurrentBlock(); if (nr > (privateSyncing?.TryGetCurrentBlock() ?? 0)) { response.name = "private"; privateSyncing = response; TryUpdateBlockTimes( currentBlock: null, currentBlockOverride: response.TryGetHighestBlock()); TryUpdateSyncTimes(response); return(true); } return(false); }