public KernelOutputKeywordsResponse KernelOutputKeywords(KernelOutputKeywordsRequest request)
 {
     try {
         var data = HostRoot.Instance.KernelOutputKeywordSet;
         return(KernelOutputKeywordsResponse.Ok(data.AsEnumerable().Select(a => KernelOutputKeywordData.Create(a)).ToList(), NTMiner.Timestamp.GetTimestamp(HostRoot.Instance.KernelOutputKeywordTimestamp)));
     }
     catch (Exception e) {
         Logger.ErrorDebugLine(e);
         return(ResponseBase.ServerError <KernelOutputKeywordsResponse>(e.Message));
     }
 }
 public KernelOutputKeywordsResponse KernelOutputKeywords([FromBody] object request)
 {
     try {
         var data = WebApiRoot.KernelOutputKeywordSet;
         return(KernelOutputKeywordsResponse.Ok(data.AsEnumerable().Select(a => KernelOutputKeywordData.Create(a)).ToList(), Timestamp.GetTimestamp(WebApiRoot.KernelOutputKeywordTimestamp)));
     }
     catch (Exception e) {
         Logger.ErrorDebugLine(e);
         return(ResponseBase.ServerError <KernelOutputKeywordsResponse>(e.Message));
     }
 }
 public ServerKernelOutputKeywordSet()
 {
     VirtualRoot.BuildCmdPath <SetKernelOutputKeywordCommand>(action: message => {
         if (message.Input == null)
         {
             return;
         }
         KernelOutputKeywordData oldValue;
         if (_dicById.TryGetValue(message.Input.GetId(), out KernelOutputKeywordData entity))
         {
             oldValue           = KernelOutputKeywordData.Create(entity);
             entity.Keyword     = message.Input.Keyword;
             entity.MessageType = message.Input.MessageType;
         }
         else
         {
             entity   = KernelOutputKeywordData.Create(message.Input);
             oldValue = null;
             _dicById.Add(message.Input.GetId(), entity);
         }
         OfficialServer.KernelOutputKeywordService.SetKernelOutputKeywordAsync(entity, (response, exception) => {
             if (!response.IsSuccess())
             {
                 if (oldValue == null)
                 {
                     _dicById.Remove(message.Input.GetId());
                 }
                 else
                 {
                     entity.Keyword     = oldValue.Keyword;
                     entity.MessageType = oldValue.MessageType;
                 }
                 Write.UserFail(response.ReadMessage(exception));
                 VirtualRoot.RaiseEvent(new KernelOutputKeyworSetedEvent(entity));
             }
         });
         VirtualRoot.RaiseEvent(new KernelOutputKeyworSetedEvent(entity));
     });
     VirtualRoot.BuildCmdPath <RemoveKernelOutputKeywordCommand>(action: message => {
         if (message == null || message.EntityId == Guid.Empty)
         {
             throw new ArgumentNullException();
         }
         if (!_dicById.ContainsKey(message.EntityId))
         {
             return;
         }
         KernelOutputKeywordData entity = _dicById[message.EntityId];
         OfficialServer.KernelOutputKeywordService.RemoveKernelOutputKeyword(entity.Id, (response, e) => {
             if (response.IsSuccess())
             {
                 _dicById.Remove(entity.Id);
                 VirtualRoot.RaiseEvent(new KernelOutputKeywordRemovedEvent(entity));
             }
             else
             {
                 Write.UserFail(response.ReadMessage(e));
             }
         });
     });
 }
Пример #4
0
 public KernelOutputKeywordSet(string dbFileFullName, bool isServer)
 {
     if (string.IsNullOrEmpty(dbFileFullName))
     {
         throw new ArgumentNullException(nameof(dbFileFullName));
     }
     _connectionString = $"filename={dbFileFullName};journal=false";
     _isServer         = isServer;
     if (!isServer)
     {
         VirtualRoot.BuildCmdPath <LoadKernelOutputKeywordCommand>(action: message => {
             DateTime localTimestamp = VirtualRoot.LocalKernelOutputKeywordSetTimestamp;
             // 如果已知服务器端最新内核输出关键字时间戳不比本地已加载的最新内核输出关键字时间戳新就不用加载了
             if (message.KnowKernelOutputKeywordTimestamp <= Timestamp.GetTimestamp(localTimestamp))
             {
                 return;
             }
             OfficialServer.KernelOutputKeywordService.GetKernelOutputKeywords((response, e) => {
                 if (response.IsSuccess())
                 {
                     KernelOutputKeywordData[] toRemoves = _dicById.Where(a => a.Value.DataLevel == DataLevel.Global).Select(a => a.Value).ToArray();
                     foreach (var item in toRemoves)
                     {
                         _dicById.Remove(item.Id);
                         if (_dicByKernelOutputId.TryGetValue(item.KernelOutputId, out List <IKernelOutputKeyword> list))
                         {
                             list.Remove(item);
                         }
                     }
                     if (response.Data.Count != 0)
                     {
                         foreach (var item in response.Data)
                         {
                             item.SetDataLevel(DataLevel.Global);
                             _dicById.Add(item.Id, item);
                             if (!_dicByKernelOutputId.TryGetValue(item.KernelOutputId, out List <IKernelOutputKeyword> list))
                             {
                                 list = new List <IKernelOutputKeyword>();
                                 _dicByKernelOutputId.Add(item.KernelOutputId, list);
                             }
                             list.Add(item);
                         }
                         if (response.Timestamp != Timestamp.GetTimestamp(localTimestamp))
                         {
                             VirtualRoot.LocalKernelOutputKeywordSetTimestamp = Timestamp.FromTimestamp(response.Timestamp);
                         }
                         CacheServerKernelOutputKeywords(response.Data);
                         VirtualRoot.RaiseEvent(new KernelOutputKeywordLoadedEvent(response.Data));
                     }
                 }
             });
         });
     }
     VirtualRoot.BuildCmdPath <AddOrUpdateKernelOutputKeywordCommand>(action: (message) => {
         InitOnece();
         if (isServer || !DevMode.IsDevMode)
         {
             DataLevel dataLevel = isServer ? DataLevel.Global : DataLevel.Profile;
             if (_dicById.TryGetValue(message.Input.GetId(), out KernelOutputKeywordData exist))
             {
                 exist.Update(message.Input);
                 exist.SetDataLevel(dataLevel);
                 using (LiteDatabase db = new LiteDatabase(_connectionString)) {
                     var col = db.GetCollection <KernelOutputKeywordData>();
                     col.Update(exist);
                 }
                 if (!isServer)
                 {
                     VirtualRoot.RaiseEvent(new UserKernelOutputKeywordUpdatedEvent(message.Id, exist));
                 }
             }
             else
             {
                 KernelOutputKeywordData entity = new KernelOutputKeywordData().Update(message.Input);
                 entity.SetDataLevel(dataLevel);
                 _dicById.Add(entity.Id, entity);
                 if (!_dicByKernelOutputId.TryGetValue(entity.KernelOutputId, out List <IKernelOutputKeyword> list))
                 {
                     list = new List <IKernelOutputKeyword>();
                     _dicByKernelOutputId.Add(entity.KernelOutputId, list);
                 }
                 list.Add(entity);
                 using (LiteDatabase db = new LiteDatabase(_connectionString)) {
                     var col = db.GetCollection <KernelOutputKeywordData>();
                     col.Insert(entity);
                 }
                 if (!isServer)
                 {
                     VirtualRoot.RaiseEvent(new UserKernelOutputKeywordAddedEvent(message.Id, entity));
                 }
             }
         }
         else if (DevMode.IsDevMode)
         {
             OfficialServer.KernelOutputKeywordService.AddOrUpdateKernelOutputKeywordAsync(KernelOutputKeywordData.Create(message.Input), (response, e) => {
                 if (response.IsSuccess())
                 {
                     VirtualRoot.Execute(new LoadKernelOutputKeywordCommand());
                 }
             });
         }
     });
     VirtualRoot.BuildCmdPath <RemoveKernelOutputKeywordCommand>(action: (message) => {
         InitOnece();
         if (isServer || !DevMode.IsDevMode)
         {
             if (message == null || message.EntityId == Guid.Empty)
             {
                 return;
             }
             if (!_dicById.ContainsKey(message.EntityId))
             {
                 return;
             }
             KernelOutputKeywordData entity = _dicById[message.EntityId];
             _dicById.Remove(entity.GetId());
             if (_dicByKernelOutputId.TryGetValue(entity.KernelOutputId, out List <IKernelOutputKeyword> list))
             {
                 list.Remove(entity);
             }
             using (LiteDatabase db = new LiteDatabase(_connectionString)) {
                 var col = db.GetCollection <KernelOutputKeywordData>();
                 col.Delete(message.EntityId);
             }
             if (!isServer)
             {
                 VirtualRoot.RaiseEvent(new UserKernelOutputKeywordRemovedEvent(message.Id, entity));
             }
         }
         else if (DevMode.IsDevMode)
         {
             OfficialServer.KernelOutputKeywordService.RemoveKernelOutputKeyword(message.EntityId, (response, e) => {
                 if (response.IsSuccess())
                 {
                     VirtualRoot.Execute(new LoadKernelOutputKeywordCommand());
                 }
             });
         }
     });
 }
 public DataResponse <List <KernelOutputKeywordData> > KernelOutputKeywords(KernelOutputKeywordsRequest request)
 {
     try {
         var data = HostRoot.Instance.KernelOutputKeywordSet;
         return(DataResponse <List <KernelOutputKeywordData> > .Ok(data.Select(a => KernelOutputKeywordData.Create(a)).ToList()));
     }
     catch (Exception e) {
         Logger.ErrorDebugLine(e);
         return(ResponseBase.ServerError <DataResponse <List <KernelOutputKeywordData> > >(e.Message));
     }
 }