Esempio n. 1
0
        private Task FlushAsync()
        {
            _InnerCommitable.Clear();
            _Commitable.Commit();
            _Commitable.Clear();
            var t = Task.Run(() =>
            {
                _InnerCommitable.Commit();
                _LastFlush = DateTimeOffset.UtcNow;
            });

            _Commiting = t;
            return(t);
        }
        public override void SaveChanges(ChainedBlock newTip, IEnumerable <uint256> txIds, IEnumerable <Coins> coins)
        {
            _Commitable.SaveChanges(newTip, txIds, coins);

            if ((_Commiting == null || _Commiting.IsCompleted) && (DateTimeOffset.UtcNow - _LastFlush) > FlushPeriod)
            {
                _InnerCommitable.Clear();
                _Commitable.SaveChanges();
                _Commitable.Clear();
                _Commiting = Task.Run(() =>
                {
                    _InnerCommitable.SaveChanges();
                    _LastFlush = DateTimeOffset.UtcNow;
                });
            }
        }