private void AddSyncBlockTask(UInt256 hash, uint blockHeight, TaskSession session) { if (!syncBlockTasks.TryGetValue(hash, out List <SyncBlockTask> list)) { list = new List <SyncBlockTask>(); syncBlockTasks.Add(hash, list); } SyncBlockTask task = list.Find(p => p.Session == session); if (task != null) { task.ExpiryTime = DateTime.UtcNow + SyncBlockTimeout; } else { list.Add(new SyncBlockTask { Hash = hash, BlockHeight = blockHeight, ExpiryTime = DateTime.UtcNow + SyncBlockTimeout, Session = session }); } session.SyncBlockTasks++; }
private void CompleteSyncBlockTask(UInt256 hash, TaskSession session) { if (syncBlockTasks.TryGetValue(hash, out List <SyncBlockTask> list)) { SyncBlockTask task = list.Find(p => p.Session == session); if (task != null) { list.Remove(task); if (list.Count() == 0) { syncBlockTasks.Remove(hash); } } } if (syncBlockTasks.Count() == 0) { SyncBlocks(); } }
private void RestartSyncBlockTask(SyncBlockTask task, TaskSession session) { RemoveSyncBlockTask(task.Hash, task.Session, false); AddSyncBlockTask(task.Hash, task.BlockHeight, session); }
private void RemoveSyncBlockTask(SyncBlockTask task, bool cleanup = true) { RemoveSyncBlockTask(task.Hash, task.Session, cleanup); }