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); }
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); } }
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); } } }
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); } }
public ReadOnlyHyperNodeMessageInfo(HyperNodeMessageRequest message) { CommandName = message.CommandName; CreatedByAgentName = message.CreatedByAgentName; ProcessOptionFlags = message.ProcessOptionFlags; }