Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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());
 }
Exemplo n.º 3
0
 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());
 }
Exemplo n.º 4
0
 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);
                 }
             }
         }
     }
 }