public void StartMineAsync(IMinerData client, Guid workId) { string localJson = string.Empty, serverJson = string.Empty; if (workId != Guid.Empty) { localJson = MinerStudioPath.ReadMineWorkLocalJsonFile(workId).Replace(NTKeyword.MinerNameParameterName, client.WorkerName); serverJson = MinerStudioPath.ReadMineWorkServerJsonFile(workId); } WorkRequest request = new WorkRequest { WorkId = workId, LocalJson = localJson, ServerJson = serverJson }; RpcRoot.PostAsync <ResponseBase>(client.GetLocalIp(), NTKeyword.NTMinerDaemonPort, _daemonControllerName, nameof(INTMinerDaemonController.StartMine), request, null, timeountMilliseconds: 3000); }
public MineWorkSet() { VirtualRoot.BuildEventPath <MinerStudioServiceSwitchedEvent>("切换了群口后台服务类型后刷新内存", LogEnum.DevConsole, path: message => { _dicById.Clear(); base.Refresh(); // 初始化以触发MineWorkSetInitedEvent事件 InitOnece(); }, this.GetType()); VirtualRoot.BuildCmdPath <AddMineWorkCommand>(path: message => { InitOnece(); if (!_dicById.ContainsKey(message.Input.Id)) { var repository = VirtualRoot.CreateLocalRepository <MineWorkData>(); var data = new MineWorkData().Update(message.Input); data.CreatedOn = DateTime.Now; _dicById.Add(data.Id, data); repository.Add(data); VirtualRoot.RaiseEvent(new MineWorkAddedEvent(message.MessageId, data)); } }, this.GetType()); VirtualRoot.BuildCmdPath <UpdateMineWorkCommand>(path: message => { InitOnece(); if (_dicById.TryGetValue(message.Input.Id, out MineWorkData data)) { var repository = VirtualRoot.CreateLocalRepository <MineWorkData>(); data.Update(message.Input); data.ModifiedOn = DateTime.Now; repository.Update(data); VirtualRoot.RaiseEvent(new MineWorkUpdatedEvent(message.MessageId, data)); } }, this.GetType()); VirtualRoot.BuildCmdPath <RemoveMineWorkCommand>(path: message => { InitOnece(); if (_dicById.TryGetValue(message.EntityId, out MineWorkData entity)) { _dicById.Remove(message.EntityId); var repository = VirtualRoot.CreateLocalRepository <MineWorkData>(); repository.Remove(message.EntityId); MinerStudioPath.DeleteMineWorkFiles(message.EntityId); VirtualRoot.RaiseEvent(new MineWorkRemovedEvent(message.MessageId, entity)); } }, this.GetType()); }
public MineWorkSet() { VirtualRoot.AddCmdPath <AddMineWorkCommand>(action: message => { InitOnece(); if (!_dicById.ContainsKey(message.Input.Id)) { var repository = VirtualRoot.CreateLocalRepository <MineWorkData>(); var data = new MineWorkData().Update(message.Input); data.CreatedOn = DateTime.Now; _dicById.Add(data.Id, data); repository.Add(data); VirtualRoot.RaiseEvent(new MineWorkAddedEvent(message.MessageId, data)); } }, this.GetType()); VirtualRoot.AddCmdPath <UpdateMineWorkCommand>(action: message => { InitOnece(); if (_dicById.TryGetValue(message.Input.Id, out MineWorkData data)) { var repository = VirtualRoot.CreateLocalRepository <MineWorkData>(); data.Update(message.Input); data.ModifiedOn = DateTime.Now; repository.Update(data); VirtualRoot.RaiseEvent(new MineWorkUpdatedEvent(message.MessageId, data)); } }, this.GetType()); VirtualRoot.AddCmdPath <RemoveMineWorkCommand>(action: message => { InitOnece(); if (_dicById.TryGetValue(message.EntityId, out MineWorkData entity)) { _dicById.Remove(message.EntityId); var repository = VirtualRoot.CreateLocalRepository <MineWorkData>(); repository.Remove(message.EntityId); MinerStudioPath.DeleteMineWorkFiles(message.EntityId); VirtualRoot.RaiseEvent(new MineWorkRemovedEvent(message.MessageId, entity)); } }, this.GetType()); }
private void DoEdit(FormType?formType) { if (!MinerStudioRoot.MineWorkVms.TryGetMineWorkVm(this.Id, out MineWorkViewModel mineWorkVm) && !this.Id.IsSelfMineWorkId()) { WpfUtil.ShowInputDialog("作业名称", string.Empty, string.Empty, workName => { if (string.IsNullOrEmpty(workName)) { return("作业名称是必须的"); } return(string.Empty); }, onOk: workName => { new MineWorkViewModel(this) { Name = workName }.Save.Execute(null); }); } else { _minerClientVm = MinerStudioRoot.MinerClientsWindowVm.SelectedMinerClients.FirstOrDefault(); if (_minerClientVm == null) { VirtualRoot.Out.ShowError("未选中矿机", autoHideSeconds: 4); return; } if (this.Id.IsSelfMineWorkId()) { SelfMineWork.Description = $"{_minerClientVm.GetMinerOrClientName()} 矿机的单机作业"; if (RpcRoot.IsOuterNet) { if (!_minerClientVm.IsOuterUserEnabled) { VirtualRoot.Out.ShowError("无法操作,因为选中的矿机未开启外网群控。", autoHideSeconds: 6); return; } VirtualRoot.AddOnecePath <GetSelfWorkLocalJsonResponsedEvent>("获取到响应结果后填充Vm内存", LogEnum.DevConsole, action: message => { if (message.ClientId == _minerClientVm.ClientId) { string data = message.Data; EditJson(formType, WorkType.SelfWork, data); } }, PathId.Empty, typeof(MineWorkViewModel)); MinerStudioService.Instance.GetSelfWorkLocalJsonAsync(_minerClientVm); } else { RpcRoot.Client.NTMinerDaemonService.GetSelfWorkLocalJsonAsync(_minerClientVm, (json, e) => { string data = json; EditJson(formType, WorkType.SelfWork, data); }); } } else { // 编辑作业前切换上下文 // 根据workId下载json保存到本地并调用LocalJson.Instance.ReInit() if (RpcRoot.IsOuterNet) { RpcRoot.OfficialServer.UserMineWorkService.GetLocalJsonAsync(this.Id, (response, e) => { if (response.IsSuccess()) { string data = response.Data; EditJson(formType, WorkType.MineWork, data); } }); } else { try { string localJsonFileFullName = MinerStudioPath.GetMineWorkLocalJsonFileFullName(this.Id); string data = string.Empty; if (File.Exists(localJsonFileFullName)) { data = File.ReadAllText(localJsonFileFullName); } EditJson(formType, WorkType.MineWork, data); } catch (Exception e) { Logger.ErrorDebugLine(e); } } } } }