public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            StartTaskResponse response = new StartTaskResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("failures", targetDepth))
                {
                    var unmarshaller = new ListUnmarshaller <Failure, FailureUnmarshaller>(FailureUnmarshaller.Instance);
                    response.Failures = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("tasks", targetDepth))
                {
                    var unmarshaller = new ListUnmarshaller <Task, TaskUnmarshaller>(TaskUnmarshaller.Instance);
                    response.Tasks = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
Exemple #2
0
        private static void UnmarshallResult(XmlUnmarshallerContext context, StartTaskResponse response)
        {
            int originalDepth = context.CurrentDepth;
            int targetDepth   = originalDepth + 1;

            if (context.IsStartOfDocument)
            {
                targetDepth += 2;
            }

            while (context.ReadAtDepth(originalDepth))
            {
                if (context.IsStartElement || context.IsAttribute)
                {
                    if (context.TestExpression("failures/member", targetDepth))
                    {
                        var unmarshaller = FailureUnmarshaller.Instance;
                        var item         = unmarshaller.Unmarshall(context);
                        response.Failures.Add(item);
                        continue;
                    }
                    if (context.TestExpression("tasks/member", targetDepth))
                    {
                        var unmarshaller = TaskUnmarshaller.Instance;
                        var item         = unmarshaller.Unmarshall(context);
                        response.Tasks.Add(item);
                        continue;
                    }
                }
            }

            return;
        }
Exemple #3
0
        public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context)
        {
            StartTaskResponse response = new StartTaskResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.IsStartElement)
                {
                    if (context.TestExpression("StartTaskResult", 2))
                    {
                        UnmarshallResult(context, response);
                        continue;
                    }

                    if (context.TestExpression("ResponseMetadata", 2))
                    {
                        response.ResponseMetadata = ResponseMetadataUnmarshaller.Instance.Unmarshall(context);
                    }
                }
            }

            return(response);
        }
        public static StartTaskResponse Unmarshall(UnmarshallerContext context)
        {
            StartTaskResponse startTaskResponse = new StartTaskResponse();

            startTaskResponse.HttpResponse = context.HttpResponse;
            startTaskResponse.RequestId    = context.StringValue("StartTask.RequestId");
            startTaskResponse.TaskId       = context.LongValue("StartTask.TaskId");

            return(startTaskResponse);
        }
Exemple #5
0
        public static StartTaskResponse Unmarshall(UnmarshallerContext _ctx)
        {
            StartTaskResponse startTaskResponse = new StartTaskResponse();

            startTaskResponse.HttpResponse   = _ctx.HttpResponse;
            startTaskResponse.Success        = _ctx.BooleanValue("StartTask.Success");
            startTaskResponse.ErrCode        = _ctx.StringValue("StartTask.ErrCode");
            startTaskResponse.ErrMessage     = _ctx.StringValue("StartTask.ErrMessage");
            startTaskResponse.HttpStatusCode = _ctx.IntegerValue("StartTask.HttpStatusCode");
            startTaskResponse.RequestId      = _ctx.StringValue("StartTask.RequestId");
            startTaskResponse.TaskId         = _ctx.StringValue("StartTask.TaskId");
            startTaskResponse.JobTypeName    = _ctx.StringValue("StartTask.JobTypeName");

            return(startTaskResponse);
        }
        //The function is called by the EAWS Service. This in turn calls the Test Client SendUpdate() function
        public void SendUpdate(JobResponseType resp)
        {
            try
            {
                lock (lockThis)
                {
                    if (resp == null)
                    {
                        JLog.Instance.AppInfo("服务端返回空信息");
                        //IDC_RESULT_TEXT.Text += "\n Service Update Failure!!";
                        return;
                    }
                    JLog.Instance.Info("当前所有任务列表如下:");
                    foreach (var key in GlobalInfo.Instance.JobsRunning.Keys)
                    {
                        JLog.Instance.Info(string.Format("key:{0}", key));
                    }



                    if (GlobalInfo.Instance.JobsRunning.ContainsKey(resp.itemIDRef) == false)
                    {
                        JLog.Instance.AppInfo(string.Format("服务端返回信息,iD={0}没有找到对应的请求", resp.itemIDRef));
                        return;
                    }


                    //Poll status or Completed Job Update
                    if (resp is TaskCompletionResponse)
                    {
                        JLog.Instance.AppInfo("EAWS服务返回:任务执行完成");
                        JLog.Instance.AppInfo("从JobsRunning移除任务");
                        GlobalInfo.Instance.JobsRunning.Remove(resp.itemIDRef);
                        #region TaskCompletionResponse
                        TaskCompletionResponse rTaskCompletionRepsonse = resp as TaskCompletionResponse;

                        //Call to RequestTaskStatus() was successful when:
                        //rTaskStatusResponse is not NULL
                        //rTaskStatusResponse is marked with success and
                        //GUID of rTaskStatusResponse and rTaskStatusRequest matches
                        if (rTaskCompletionRepsonse.Success)
                        {
                            JLog.Instance.AppInfo("任务执行完成");

                            //GlobalInfo.Instance.JobsRunning.Remove(resp.itemIDRef);

                            if (!string.IsNullOrEmpty(rTaskCompletionRepsonse.OutputLocation))
                            {
                                JLog.Instance.AppInfo("任务执行完成,输出路径: " + rTaskCompletionRepsonse.OutputLocation.Trim());
                            }
                            else
                            {
                                RaiseEAWSTaskCompletAckEvent(true, string.Empty);
                            }
                            if (rTaskCompletionRepsonse.Finished == true)
                            {
                                JLog.Instance.AppInfo(string.Format("任务:{0} GUID:{1} 的已结束...", rTaskCompletionRepsonse.TaskName, rTaskCompletionRepsonse.itemIDRef.ToString()));
                                //IDC_RESULT_TEXT.Text += "\n Task: " + rTaskCompletionRepsonse.TaskName
                                //       + " Master Guid: " + resp.masterIDRef.ToString()
                                //       + " Guid: " + resp.itemIDRef.ToString() + " is Complete."
                                //       + "\n" + resp.Status.comment;
                            }
                            else
                            {
                                //IDC_RESULT_TEXT.Text += "\n Task: " + rTaskCompletionRepsonse.TaskName
                                //    + " Master Guid: " + resp.masterIDRef.ToString()
                                //    + " Guid: " + resp.itemIDRef.ToString() + " is Running.";
                                JLog.Instance.AppInfo(string.Format("任务:{0} GUID:{1} 的正在运行...", rTaskCompletionRepsonse.TaskName, rTaskCompletionRepsonse.itemIDRef.ToString()));
                            }
                        }
                        else
                        {
                            //IDC_RESULT_TEXT.Text += "\n Unable to get status update for Task: "
                            //+ rTaskCompletionRepsonse.TaskName + " Guid: " + rTaskCompletionRepsonse.itemIDRef.ToString();
                            JLog.Instance.AppInfo(string.Format("无法跟踪任务:{0} GUID:{1} 的状态", rTaskCompletionRepsonse.TaskName, rTaskCompletionRepsonse.itemIDRef.ToString()));
                        }
                        #endregion
                    }
                    else if (resp is StartTaskResponse)
                    {
                        JLog.Instance.AppInfo("EAWS服务返回任务启动结果:");
                        #region StartTaskResponse
                        StartTaskResponse rStartTaskResponse = resp as StartTaskResponse;

                        ////Call to RequestStartTask() was successful when:
                        ////rStartTaskResponse is marked with success
                        if (rStartTaskResponse.Success)
                        {
                            RaiseEAWSTaskStartStateEvent(true, string.Empty);
                            //IDC_RESULT_TEXT.Text += "\n Task: " + rStartTaskResponse.TaskName
                            //    + " Master Guid: " + resp.masterIDRef.ToString()
                            //    + " Guid: " + rStartTaskResponse.itemIDRef.ToString()
                            //    + " " + rStartTaskResponse.Status.comment;
                        }
                        else
                        {
                            string msg = string.Format("无法启动EAWS任务");
                            RaiseEAWSTaskStartStateEvent(false, msg);
                            //IDC_RESULT_TEXT.Text += "\n Unable to start Task: "
                            //    + " Master Guid: " + resp.masterIDRef.ToString()
                            //    + rStartTaskResponse.TaskName + " Guid: " + rStartTaskResponse.itemIDRef.ToString();
                        }
                        #endregion
                    }
                    else if (resp is StopTaskResponse)
                    {
                        JLog.Instance.AppInfo("EAWS服务返回停止任务结果:");
                        #region StopTaskResponse
                        //StopTaskResponse rStopTaskResponse = resp as StopTaskResponse;

                        ////Call to RequestStopTask() was successful when:
                        ////rStartTaskResponse is marked with success
                        //if (rStopTaskResponse.Success)
                        //{
                        //    IDC_RESULT_TEXT.Text += "\n Task: " + rStopTaskResponse.TaskName
                        //        + " Master Guid: " + resp.masterIDRef.ToString()
                        //        + " Guid: " + rStopTaskResponse.itemIDRef.ToString()
                        //        + " " + rStopTaskResponse.Status.comment;
                        //}
                        //else
                        //{
                        //    IDC_RESULT_TEXT.Text += "\n Unable to stop Task: "
                        //        + " Master Guid: " + resp.masterIDRef.ToString()
                        //        + rStopTaskResponse.TaskName + " Guid: " + rStopTaskResponse.itemIDRef.ToString();
                        //}
                        #endregion
                    }
                    else if (resp is DeleteTaskResponse)
                    {
                        JLog.Instance.AppInfo("EAWS服务返回删除任务结果:");
                        #region DeleteTaskResponse
                        //JLog.Instance.AppInfo("EAWS服务返回删除任务结果:");
                        //DeleteTaskResponse rDeleteTaskResponse = resp as DeleteTaskResponse;

                        ////Call to RequestDeleteTask() was successful when:
                        ////rDeleteTaskResponse is marked with success
                        //if (rDeleteTaskResponse.Success)
                        //{
                        //    IDC_RESULT_TEXT.Text += "\n Task: " + rDeleteTaskResponse.TaskName
                        //        + " Master Guid: " + resp.masterIDRef.ToString()
                        //        + " Guid: " + rDeleteTaskResponse.itemIDRef.ToString()
                        //        + " " + rDeleteTaskResponse.Status.comment;
                        //}
                        //else
                        //{
                        //    IDC_RESULT_TEXT.Text += "\n Unable to delete Task: "
                        //        + " Master Guid: " + resp.masterIDRef.ToString()
                        //        + rDeleteTaskResponse.TaskName + " Guid: " + rDeleteTaskResponse.itemIDRef.ToString();
                        //}
                        #endregion
                    }
                    else if (resp is TaskStatusResponse)
                    {
                        JLog.Instance.AppInfo("EAWS服务返回任务状态查询结果:");
                        #region TaskStatusResponse
                        //JLog.Instance.AppInfo("EAWS服务返回任务状态:");
                        //TaskStatusResponse rTaskStatusResponse = resp as TaskStatusResponse;

                        ////Call to RequestTaskStatus() was successful when:
                        ////rTaskStatusResponse is not NULL
                        ////rTaskStatusResponse is marked with success and
                        ////GUID of rTaskStatusResponse and rTaskStatusRequest matches
                        //if (rTaskStatusResponse.Success)
                        //{
                        //    m_JobsRunning.Remove(resp.itemIDRef);
                        //    IDC_RESULT_TEXT.Text += "\n Task: " + rTaskStatusResponse.TaskName
                        //        + " Master Guid: " + resp.masterIDRef.ToString()
                        //        + " Guid: " + rTaskStatusResponse.itemIDRef.ToString();

                        //    //Access the Number of warnings, Errors, Outstanding pieces of work and
                        //    //Merge activities of running task.
                        //    //If Outstanding pieces of work is zero then task is finished
                        //    IDC_RESULT_TEXT.Text += "\n Succeeded: " + rTaskStatusResponse.NumSucceeded.ToString()
                        //        + " Warnings: " + rTaskStatusResponse.NumWarning.ToString()
                        //        + " Errors: " + rTaskStatusResponse.NumError.ToString()
                        //        + " Outstanding: " + rTaskStatusResponse.NumOutStanding.ToString()
                        //        + " To Merge: " + rTaskStatusResponse.NumAwaitingMerge.ToString()
                        //        + rTaskStatusResponse.Status.comment;
                        //}
                        //else
                        //{
                        //    IDC_RESULT_TEXT.Text += "\n Unable to get status update for Task: "
                        //        + " Master Guid: " + resp.masterIDRef.ToString()
                        //        + rTaskStatusResponse.TaskName + " Guid: " + rTaskStatusResponse.itemIDRef.ToString();
                        //}
                        #endregion
                    }
                    else if (resp is EditTaskRegionResponse)
                    {
                        JLog.Instance.AppInfo("EAWS服务返回编辑仿真范围结果");
                        JLog.Instance.AppInfo("从JobsRunning移除任务");
                        GlobalInfo.Instance.JobsRunning.Remove(resp.itemIDRef);
                        #region EditTaskRegionResponse
                        EditTaskRegionResponse rEditTaskRegionResponse = resp as EditTaskRegionResponse;
                        if (rEditTaskRegionResponse.Success)
                        {
                            JLog.Instance.AppInfo("编辑仿真范围成功");
                            //EAWSBackEvent.Instance.SubdoEditRegionAck(true);
                            RaiseEditRegionAckEvent(true, string.Empty);
                        }
                        else
                        {
                            JLog.Instance.AppInfo("编辑仿真范围失败");

                            //EAWSBackEvent.Instance.SubdoEditRegionAck(false);
                            RaiseEditRegionAckEvent(false, "编辑仿真范围失败");
                        }
                        #endregion
                    }
                    else if (resp is EditTaskFiltersResponse)
                    {
                        JLog.Instance.AppInfo("EAWS服务返回任务过滤结果:");
                        #region EditTaskFiltersResponse
                        //EditTaskFiltersResponse rEditTaskFiltersResponse = resp as EditTaskFiltersResponse;

                        ////Call to RequestEditTaskFilters() was successful when:
                        ////rEditTaskFiltersResponse is marked with success
                        //if (rEditTaskFiltersResponse.Success)
                        //{
                        //    IDC_RESULT_TEXT.Text += "\n Task: " + rEditTaskFiltersResponse.TaskName
                        //        + " Master Guid: " + resp.masterIDRef.ToString()
                        //        + " Guid: " + rEditTaskFiltersResponse.itemIDRef.ToString()
                        //        + " " + rEditTaskFiltersResponse.Status.comment;
                        //}
                        //else
                        //{
                        //    IDC_RESULT_TEXT.Text += "\n Unable to edit region for Task: "
                        //        + " Master Guid: " + resp.masterIDRef.ToString()
                        //        + rEditTaskFiltersResponse.TaskName + " Guid: " + rEditTaskFiltersResponse.itemIDRef.ToString();
                        //}
                        #endregion
                    }
                    else if (resp is AllSchemaNamesResponse)
                    {
                        JLog.Instance.AppInfo("EAWS服务返回获取Schema结果:");
                        #region AllSchemaNamesResponse
                        ////Call RequestAllSchemaNames passing rAllSchemaNamesRequest as a parameter
                        ////It gets a AllSchemaNamesResponse as a return parameter
                        //AllSchemaNamesResponse rAllSchemaNamesResponse = resp as AllSchemaNamesResponse;

                        ////Call to RequestAllSchemaNames() was successful when:
                        ////rAllSchemaNamesResponse is marked with success and
                        ////rAllSchemaNamesResponse.AllSchemaNames is not empty as this holds list of all schemas
                        //if (rAllSchemaNamesResponse.Success && rAllSchemaNamesResponse.AllSchemaNames != null)
                        //{
                        //    //Extract each schema from rAllSchemaNamesResponse.AllSchemaNames
                        //    this.IDC_SCHEMA_COMBO.Items.Clear();
                        //    foreach (string taskname in rAllSchemaNamesResponse.AllSchemaNames)
                        //    {
                        //        this.IDC_SCHEMA_COMBO.Items.Add(taskname);
                        //    }
                        //}
                        //else
                        //{
                        //    IDC_RESULT_TEXT.Text += "\n Unable to get list of schemas.";
                        //}
                        #endregion
                    }
                    else if (resp is AllSchemaTaskNamesResponse)
                    {
                        JLog.Instance.AppInfo("EAWS服务返回:");
                        #region AllSchemaTaskNamesResponse
                        //AllSchemaTaskNamesResponse rAllSchemaTaskNamesResponse = resp as AllSchemaTaskNamesResponse;

                        ////Call to RequestAllTaskNames() was successful when:
                        ////rAllSchemaTaskNamesResponse is marked with success and
                        ////rAllSchemaTaskNamesResponse.AllTaskNames is not empty as this holds list of all tasks
                        //if (rAllSchemaTaskNamesResponse.Success && rAllSchemaTaskNamesResponse.AllTaskNames != null)
                        //{
                        //    //Extract each task from rAllSchemaNamesResponse.AllTaskNames
                        //    this.IDC_TASK_COMBO.Items.Clear();
                        //    foreach (string taskname in rAllSchemaTaskNamesResponse.AllTaskNames)
                        //    {
                        //        this.IDC_TASK_COMBO.Items.Add(taskname);
                        //    }
                        //}
                        //else
                        //{
                        //    IDC_RESULT_TEXT.Text += "\n Unable to get list of tasks for schema: "
                        //        + rAllSchemaTaskNamesResponse.SchemaName;
                        //}
                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
                JLog.Instance.Error(ex.Message, MethodBase.GetCurrentMethod().Name,
                                    MethodBase.GetCurrentMethod().Module.Name);
            }
        }