Ejemplo n.º 1
0
        private void btnStepOneNext_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(txtTargetPath.Text))
            {
                MessageBox.Show("请输入安装矿机的有效路径", "提示");
                return;
            }

            deploymentFolderPath = txtTargetPath.Text.Trim();

            List <MinerMachine> machineList = dataGridMachines.GetAllMachines();

            if (machineList.Count == 0)
            {
                MessageBox.Show("请输入机器名称", "提示");
                return;
            }

            if ((machineList.Count > 1 || !machineList[0].IsLocalMachine()) &&
                string.IsNullOrWhiteSpace(txtTargetUserName.Text))
            {
                MessageBox.Show("请填写用于连接目标机器的用户名和密码信息", "提示");
                return;
            }

            if (!string.IsNullOrWhiteSpace(txtTargetUserName.Text))
            {
                string username = txtTargetUserName.Text.Trim();

                if (string.IsNullOrEmpty(txtTargetUserPassword.Password))
                {
                    MessageBox.Show("请输入用户的密码", "提示");
                    return;
                }

                string            password   = txtTargetUserPassword.Password.Trim();
                MachineCredential credential = new MachineCredential()
                {
                    UserName = username, LoginPlainPassword = password
                };

                // Consolidate the credentials
                foreach (MinerMachine m in machineList)
                {
                    m.Credential = credential;
                }
            }

            createdClients.Clear();
            for (int i = machineConnectivityCache.Count - 1; i >= 0; i--)
            {
                MachineConnectivity connectivity = machineConnectivityCache[i];
                if (!machineList.Any(m => m.FullName.Equals(connectivity.Machine.FullName)))
                {
                    machineConnectivityCache.RemoveAt(i);
                }
            }

            foreach (MinerMachine machine in machineList)
            {
                createdClients.Add(new MinerClient(machine, deploymentFolderPath));

                if (!machineConnectivityCache.Any(conn => conn.Machine.FullName.Equals(machine.FullName)))
                {
                    machineConnectivityCache.Add(new MachineConnectivity(machine));
                }
            }

            SwitchUIToStep(2);
        }
Ejemplo n.º 2
0
        private void StepTwo_TestMachineConnections()
        {
            if (!needRefreshMachineConnections)
            {
                return;
            }

            dataGridMachineConnections.ClearItems();

            MachineConnectivityBackgroundWork connectivityWork = new MachineConnectivityBackgroundWork(this);

            connectivityWork.OnUpdated += MachineConnectivity_OnUpdated;
            connectivityWork.SetTestingFolderPath(deploymentFolderPath);

            foreach (MinerClient client in createdClients)
            {
                MachineConnectivity connectivity = machineConnectivityCache.FirstOrDefault(conn => conn.Machine.FullName.Equals(client.Machine.FullName));
                if (connectivity == null)
                {
                    throw new InvalidDataException($"Null MachineConnectivity found in machineConnectivityCache with machineName=[{ client.Machine.FullName }].");
                }

                connectivity.ResetFailureResults();

                dataGridMachineConnections.AddItem(connectivity);
                connectivityWork.AddConnectivity(connectivity);
            }

            BackgroundWork.CreateWork(
                this,
                () => {
                /// lblTestConnectionNotice.Content = "正在测试目标机器的连接,请稍后...";
                ShowProgressIndicator("正在测试目标机器的连接,请稍后...", btnStepTwoNext, btnStepTwoBack);
            },
                () => {
                connectivityWork.DoWork();
            },
                (taskResult) => {
                HideProgressIndicator();
                if (taskResult.HasError)
                {
                    MessageBox.Show("测试出现错误:" + taskResult.Exception.Message);
                    logger.Error("Error while testing connection: " + taskResult.Exception.ToString());

                    return;
                }

                bool hasFailure = machineConnectivityCache.Any(conn => !conn.IsAllTestingSuccess());
                if (hasFailure)
                {
                    btnStepTwoNext.IsEnabled = false;
                    MessageBox.Show("连接测试结果中有部分异常,请按照说明在目标机器上运行XDaggerMinerAssistant,然后退回上一步重试.");

                    logger.Warning("MachineConnectivityWork Finished with some failure, following is the detailed data:");
                    foreach (MachineConnectivity conn in machineConnectivityCache)
                    {
                        logger.Warning(conn.FullResult());
                    }
                }

                needRefreshMachineConnections = false;
            }
                ).Execute();
        }
 public void AddItem(MachineConnectivity connectivity)
 {
     dataGridItems.Add(new MachineConnectivityDataGridItem(connectivity));
     this.dataGrid.Items.Refresh();
 }