public KernelSet(INTMinerRoot root, bool isUseJson) { _root = root; _isUseJson = isUseJson; VirtualRoot.Window <AddKernelCommand>("添加内核", LogEnum.DevConsole, action: message => { InitOnece(); if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty) { throw new ArgumentNullException(); } if (string.IsNullOrEmpty(message.Input.Code)) { throw new ValidationException("package code can't be null or empty"); } if (_dicById.ContainsKey(message.Input.GetId())) { return; } KernelData entity = new KernelData().Update(message.Input); _dicById.Add(entity.Id, entity); IRepository <KernelData> repository = NTMinerRoot.CreateServerRepository <KernelData>(isUseJson); repository.Add(entity); VirtualRoot.Happened(new KernelAddedEvent(entity)); }).AddToCollection(root.ContextHandlers); VirtualRoot.Window <UpdateKernelCommand>("更新内核", LogEnum.DevConsole, action: message => { InitOnece(); if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty) { throw new ArgumentNullException(); } if (string.IsNullOrEmpty(message.Input.Code)) { throw new ValidationException("package code can't be null or empty"); } if (!_dicById.ContainsKey(message.Input.GetId())) { return; } KernelData entity = _dicById[message.Input.GetId()]; if (ReferenceEquals(entity, message.Input)) { return; } entity.Update(message.Input); IRepository <KernelData> repository = NTMinerRoot.CreateServerRepository <KernelData>(isUseJson); repository.Update(entity); VirtualRoot.Happened(new KernelUpdatedEvent(entity)); }).AddToCollection(root.ContextHandlers); VirtualRoot.Window <RemoveKernelCommand>("移除内核", LogEnum.DevConsole, action: message => { InitOnece(); if (message == null || message.EntityId == Guid.Empty) { throw new ArgumentNullException(); } if (!_dicById.ContainsKey(message.EntityId)) { return; } KernelData entity = _dicById[message.EntityId]; List <Guid> coinKernelIds = root.CoinKernelSet.Where(a => a.KernelId == entity.Id).Select(a => a.GetId()).ToList(); foreach (var coinKernelId in coinKernelIds) { VirtualRoot.Execute(new RemoveCoinKernelCommand(coinKernelId)); } _dicById.Remove(entity.Id); IRepository <KernelData> repository = NTMinerRoot.CreateServerRepository <KernelData>(isUseJson); repository.Remove(entity.Id); VirtualRoot.Happened(new KernelRemovedEvent(entity)); }).AddToCollection(root.ContextHandlers); }
public KernelSet(IServerContext context) { _context = context; context.AddCmdPath <AddKernelCommand>("添加内核", LogEnum.DevConsole, action: message => { InitOnece(); if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty) { throw new ArgumentNullException(); } if (string.IsNullOrEmpty(message.Input.Code)) { throw new ValidationException($"{nameof(message.Input.Code)} can't be null or empty"); } if (_dicById.ContainsKey(message.Input.GetId())) { return; } KernelData entity = new KernelData().Update(message.Input); _dicById.Add(entity.Id, entity); var repository = context.CreateServerRepository <KernelData>(); repository.Add(entity); VirtualRoot.RaiseEvent(new KernelAddedEvent(message.MessageId, entity)); }, location: this.GetType()); context.AddCmdPath <UpdateKernelCommand>("更新内核", LogEnum.DevConsole, action: message => { InitOnece(); if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty) { throw new ArgumentNullException(); } if (string.IsNullOrEmpty(message.Input.Code)) { throw new ValidationException($"{nameof(message.Input.Code)} can't be null or empty"); } if (!_dicById.TryGetValue(message.Input.GetId(), out KernelData entity)) { return; } if (ReferenceEquals(entity, message.Input)) { return; } entity.Update(message.Input); var repository = context.CreateServerRepository <KernelData>(); repository.Update(entity); VirtualRoot.RaiseEvent(new KernelUpdatedEvent(message.MessageId, entity)); }, location: this.GetType()); context.AddCmdPath <RemoveKernelCommand>("移除内核", LogEnum.DevConsole, action: message => { InitOnece(); if (message == null || message.EntityId == Guid.Empty) { throw new ArgumentNullException(); } if (!_dicById.ContainsKey(message.EntityId)) { return; } KernelData entity = _dicById[message.EntityId]; List <Guid> coinKernelIds = context.CoinKernelSet.AsEnumerable().Where(a => a.KernelId == entity.Id).Select(a => a.GetId()).ToList(); foreach (var coinKernelId in coinKernelIds) { VirtualRoot.Execute(new RemoveCoinKernelCommand(coinKernelId)); } _dicById.Remove(entity.Id); var repository = context.CreateServerRepository <KernelData>(); repository.Remove(entity.Id); VirtualRoot.RaiseEvent(new KernelRemovedEvent(message.MessageId, entity)); }, location: this.GetType()); }
public KernelSet(INTMinerRoot root) { _root = root; Global.Access <AddKernelCommand>( Guid.Parse("331be370-2d4f-488f-9dd8-3709e3ff63af"), "添加内核", LogEnum.Log, action: message => { InitOnece(); if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty) { throw new ArgumentNullException(); } if (string.IsNullOrEmpty(message.Input.Code)) { throw new ValidationException("package code can't be null or empty"); } if (_dicById.ContainsKey(message.Input.GetId())) { return; } KernelData entity = new KernelData().Update(message.Input); _dicById.Add(entity.Id, entity); IRepository <KernelData> repository = NTMinerRoot.CreateServerRepository <KernelData>(); repository.Add(entity); Global.Happened(new KernelAddedEvent(entity)); }); Global.Access <UpdateKernelCommand>( Guid.Parse("f23c801a-afbe-4e59-93c2-3eaecf3c7d8e"), "更新内核", LogEnum.Log, action: message => { InitOnece(); if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty) { throw new ArgumentNullException(); } if (string.IsNullOrEmpty(message.Input.Code)) { throw new ValidationException("package code can't be null or empty"); } if (!_dicById.ContainsKey(message.Input.GetId())) { return; } KernelData entity = _dicById[message.Input.GetId()]; entity.Update(message.Input); IRepository <KernelData> repository = NTMinerRoot.CreateServerRepository <KernelData>(); repository.Update(entity); Global.Happened(new KernelUpdatedEvent(entity)); }); Global.Access <RemoveKernelCommand>( Guid.Parse("b90d68ba-2af2-48db-8bf3-5b2795667e8c"), "移除内核", LogEnum.Log, action: message => { InitOnece(); if (message == null || message.EntityId == Guid.Empty) { throw new ArgumentNullException(); } if (!_dicById.ContainsKey(message.EntityId)) { return; } KernelData entity = _dicById[message.EntityId]; List <Guid> coinKernelIds = root.CoinKernelSet.Where(a => a.KernelId == entity.Id).Select(a => a.GetId()).ToList(); List <Guid> kernelOutputFilterIds = root.KernelOutputFilterSet.Where(a => a.KernelId == entity.Id).Select(a => a.GetId()).ToList(); List <Guid> kernelOutputTranslaterIds = root.KernelOutputTranslaterSet.Where(a => a.KernelId == entity.Id).Select(a => a.GetId()).ToList(); foreach (var coinKernelId in coinKernelIds) { Global.Execute(new RemoveCoinKernelCommand(coinKernelId)); } foreach (var kernelOutputFilterId in kernelOutputFilterIds) { Global.Execute(new RemoveKernelOutputFilterCommand(kernelOutputFilterId)); } foreach (var kernelOutputTranslaterId in kernelOutputTranslaterIds) { Global.Execute(new RemoveKernelOutputTranslaterCommand(kernelOutputTranslaterId)); } _dicById.Remove(entity.Id); IRepository <KernelData> repository = NTMinerRoot.CreateServerRepository <KernelData>(); repository.Remove(entity.Id); Global.Happened(new KernelRemovedEvent(entity)); }); BootLog.Log(this.GetType().FullName + "接入总线"); }