Esempio n. 1
0
        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++;
        }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
        private void RestartSyncBlockTask(SyncBlockTask task, TaskSession session)
        {
            RemoveSyncBlockTask(task.Hash, task.Session, false);

            AddSyncBlockTask(task.Hash, task.BlockHeight, session);
        }
Esempio n. 4
0
 private void RemoveSyncBlockTask(SyncBlockTask task, bool cleanup = true)
 {
     RemoveSyncBlockTask(task.Hash, task.Session, cleanup);
 }