コード例 #1
0
ファイル: MainForm.cs プロジェクト: jheitz1117/Hyper
        private void StartAliceProgressTracking(string taskId)
        {
            if (_aliceIsProgressTracking)
            {
                MessageBox.Show("Alice is already tracking progress.", "Error", MessageBoxButtons.OK);
                return;
            }

            _aliceIsProgressTracking = true;

            txtAliceTaskId.Text = taskId;

            var progressRequest = new HyperNodeMessageRequest("HyperNodeTestClient")
            {
                CommandName          = SystemCommandName.GetCachedTaskProgressInfo,
                CommandRequestString = taskId
            };

            var progressWorker = new BackgroundWorker
            {
                WorkerReportsProgress = true
            };

            progressWorker.DoWork             += aliceProgressWorker_DoWork;
            progressWorker.ProgressChanged    += aliceProgressWorker_ProgressChanged;
            progressWorker.RunWorkerCompleted += aliceProgressWorker_RunWorkerCompleted;

            progressWorker.RunWorkerAsync(progressRequest);
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: jheitz1117/Hyper
        private void btnRunCommand_Click(object sender, EventArgs e)
        {
            try
            {
                // Clear out our data source first
                ClearResponseData();

                // Create our message request
                var serializer           = new NetDataContractRequestSerializer <LongRunningCommandTestRequest>();
                var commandRequestString = serializer.Serialize(
                    new LongRunningCommandTestRequest
                {
                    TotalRunTime         = TimeSpan.FromHours(1),
                    MinimumSleepInterval = TimeSpan.FromSeconds(1),
                    MaximumSleepInterval = TimeSpan.FromSeconds(5)
                }
                    );

                var msg = new HyperNodeMessageRequest(ClientAgentName)
                {
                    CommandName          = cboCommandNames.Text,
                    CommandRequestString = commandRequestString,
                    ProcessOptionFlags   = (chkReturnTaskTrace.Checked ? MessageProcessOptionFlags.ReturnTaskTrace : MessageProcessOptionFlags.None) |
                                           (chkRunConcurrently.Checked ? MessageProcessOptionFlags.RunConcurrently : MessageProcessOptionFlags.None) |
                                           (chkCacheProgressInfo.Checked ? MessageProcessOptionFlags.CacheTaskProgress : MessageProcessOptionFlags.None)
                };

                using (var client = new HyperNodeClient("Alice"))
                {
                    var response = client.ProcessMessage(msg);

                    PopulateResponseSummary(lstRealTimeResponse, response);
                    PopulateTaskTrace(tvwRealTimeTaskTrace, response);

                    if (response.NodeAction != HyperNodeActionType.Rejected && msg.CacheTaskProgress)
                    {
                        StartAliceProgressTracking(response.TaskId);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: jheitz1117/Hyper
        private void btnBobCancelCurrentTask_Click(object sender, EventArgs e)
        {
            var targetTaskId = txtBobTaskId.Text;

            if (!string.IsNullOrWhiteSpace(targetTaskId))
            {
                // Create our message request
                var msg = new HyperNodeMessageRequest(ClientAgentName)
                {
                    CommandName          = SystemCommandName.CancelTask,
                    CommandRequestString = targetTaskId
                };

                using (var client = new HyperNodeClient("Alice"))
                {
                    client.ProcessMessage(msg);
                }
            }
        }
コード例 #4
0
ファイル: MainForm.cs プロジェクト: jheitz1117/Hyper
        private void btnRefreshCommandList_Click(object sender, EventArgs e)
        {
            try
            {
                cboCommandNames.DataSource = null;

                var serializer = new NetDataContractResponseSerializer <GetNodeStatusResponse>();
                var msg        = new HyperNodeMessageRequest(ClientAgentName)
                {
                    CommandName = SystemCommandName.GetNodeStatus
                };

                using (var client = new HyperNodeClient("Alice"))
                {
                    var response = client.ProcessMessage(msg);

                    // TODO: Recursively find the response we're actually interested in

                    if (!string.IsNullOrWhiteSpace(response.CommandResponseString))
                    {
                        if (((ICommandResponseSerializer)serializer).Deserialize(response.CommandResponseString) is GetNodeStatusResponse commandResponse)
                        {
                            cboCommandNames.DataSource = commandResponse.Commands.Select(c => c.CommandName).OrderBy(cn => cn).ToList();
                        }
                    }
                    else
                    {
                        MessageBox.Show(response.RespondingNodeName + " did not send back a command response string.");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
コード例 #5
0
 public ReadOnlyHyperNodeMessageInfo(HyperNodeMessageRequest message)
 {
     CommandName        = message.CommandName;
     CreatedByAgentName = message.CreatedByAgentName;
     ProcessOptionFlags = message.ProcessOptionFlags;
 }