示例#1
0
        public void Cleanup()
        {
            if (Size < 0 && Timeout < 0)
            {
                return; //no nead for cleanup
            }
            while (Size >= 0 && Buffer.Count > Size)
            {
                if (Buffer.Remove(Buffer.Keys.First()))
                {
                    _TickerCleanup.SetNow();
                }
            }

            var keys = Keys;

            if (keys.IsNullOrEmpty())
            {
                return;
            }

            foreach (var v in keys)
            {
                if (v.Timeout(Timeout, TimeoutUnit))
                {
                    if (Buffer.Remove(v))
                    {
                        _TickerCleanup.SetNow();
                    }
                }
            }
        }
        public T[] ReadAllValues()
        {
            this.Cleanup();
            T[] result = Buffer.ValuesArray;
            _TickerRead.SetNow();

            return(result);
        }
示例#3
0
        public void Write(T data, TickTime time)
        {
            Cleanup();

            Buffer.Add(time.Copy(), data, true);
            _TickerWrite.SetNow();
        }
        public void Write(T data, TickTime time)
        {
            if (Size > 0 && Buffer.Count > Size)
            {
                this.Cleanup();
            }

            Buffer.Add(time.Copy(), data);
            _TickerWrite.SetNow();
        }
        public void Cleanup()
        {
            var keys = Buffer.KeysArray;

            if (keys.IsNullOrEmpty())
            {
                return;
            }

            foreach (var v in keys)
            {
                if (v.Timeout(Timeout, TimeoutUnit))
                {
                    Buffer.Remove(v);
                }
            }

            _TickerCleanup.SetNow();
        }
示例#6
0
        public T ReadNext(out TickTime time, TickTime previous)
        {
            T result = default(T);

            time = previous.Copy();
            var keys = Buffer.KeysArray;

            foreach (var key in keys)
            {
                if (key > time)
                {
                    time   = key;
                    result = Buffer[key];
                }
            }

            _TickerRead.SetNow();
            return(result);
        }
 public void Clear()
 {
     Buffer.Clear();
     _TickerClear.SetNow();
 }