Exemplo n.º 1
0
        public void Add(OperationResultDto operationResult)
        {
            InitOnece();
            if (operationResult == null)
            {
                return;
            }
            var data = OperationResultData.Create(operationResult);
            List <OperationResultData> toRemoves = new List <OperationResultData>();

            lock (_list) {
                // 新的在队尾,旧的在队头
                _list.Add(data);
                while (_list.Count > _capacityCount)
                {
                    toRemoves.Add(_list[0]);
                    _list.RemoveAt(0);
                }
            }
            using (var db = VirtualRoot.CreateLocalDb()) {
                var col = db.GetCollection <OperationResultData>();
                foreach (var item in toRemoves)
                {
                    col.Delete(item.Id);
                }
                col.Insert(data);
            }
            VirtualRoot.DaemonWsClient.SendAsync(new WsMessage(Guid.NewGuid(), WsMessage.OperationReceived));
        }
Exemplo n.º 2
0
 protected override void Init()
 {
     using (var db = VirtualRoot.CreateLocalDb()) {
         var col = db.GetCollection <OperationResultData>();
         foreach (var item in col.FindAll().OrderBy(a => a.Timestamp))
         {
             _list.Add(item);
         }
     }
 }
Exemplo n.º 3
0
 private void Init()
 {
     lock (_locker) {
         if (!_isInited)
         {
             using (var db = VirtualRoot.CreateLocalDb()) {
                 var col = db.GetCollection <OperationResultData>();
                 foreach (var item in col.FindAll().OrderBy(a => a.Timestamp))
                 {
                     _list.Add(item);
                 }
             }
             _isInited = true;
         }
     }
 }
Exemplo n.º 4
0
 public OperationResultSet()
 {
     VirtualRoot.BuildEventPath <Per24HourEvent>("检查一下记录的操作记录是否多于容量,如果多了清理一下", LogEnum.DevConsole, this.GetType(), PathPriority.Normal, path: message => {
         using (var db = VirtualRoot.CreateLocalDb()) {
             var col   = db.GetCollection <OperationResultData>();
             int count = col.Count();
             if (count <= _capacityCount)
             {
                 return;
             }
             var all           = col.FindAll().OrderBy(a => a.Timestamp).ToList();
             int toDeleteCount = all.Count - _capacityCount;
             if (toDeleteCount <= 0)
             {
                 return;
             }
             for (int i = 0; i < toDeleteCount; i++)
             {
                 col.Delete(all[i].Id);
             }
         }
     });
 }