protected async Task <HttpResponseMessage> ExecuteAsync(int timeoutMs)
        {
            var    log   = new DefaultLogService();
            string input = await Request.Content.ReadAsStringAsync();

            try
            {
                JobsRunner.JobResult result = JobsRunner.Job.RunToCompletion(Path.Combine(basePath, executableName), input, timeoutMs);

                if (result.Errors.Length > 0)
                {
                    var contents = new LogContents(null, result.Errors);
                    faultLogger.Add(DateTime.Now, typeof(JobController).Assembly.GetName().Version.ToString(), input, contents);
                }
                return(HttpResponses.Json(Request, result.Content));
            }
            catch (System.TimeoutException ex)
            {
                RegisterException(faultLogger, log, input, ex);
                return(HttpResponses.PlainText(Request, "Timeout while waiting for the execution to complete", HttpStatusCode.NoContent)); // status 204 if timeout
            }
            catch (Exception ex)
            {
                RegisterException(faultLogger, log, input, ex);
                throw ex;
            }
        }
Example #2
0
        private void SetSelectedLogContents(PageAddress address)
        {
            LogContents.Clear();

            foreach (DataGridViewRow row in dataGridView.Rows)
            {
                if (row.Cells["PageAddressColumn"].Value != DBNull.Value && (PageAddress)row.Cells["PageAddressColumn"].Value == address)
                {
                    GetLogData(row.Cells["OperationColumn"].Value.ToString(), row);
                }
            }
        }
        public SimulationOutput Post([FromBody] SimulationInput input)
        {
            var log    = new DefaultLogService();
            var output = Utilities.RunWithTimeLimit(() => Simulation.Simulate(input), Utilities.GetTimeLimitFromConfig());

            if (output.ErrorMessages != null && output.ErrorMessages.Length > 0)
            {
                var contents = new LogContents(output.DebugMessages, output.ErrorMessages);
                faultLogger.Add(DateTime.Now, typeof(JobController).Assembly.GetName().Version.ToString(), input, contents);
            }
            return(output);
        }
Example #4
0
        private void GetLogData(string operation, DataGridViewRow row)
        {
            LogContents.Clear();

            switch (operation)
            {
            case "MODIFY ROW":

                LogContents.Add("Before", GetLogData(row, 0));
                LogContents.Add("After", GetLogData(row, 1));

                break;

            case "INSERT ROWS":
                LogContents.Add("Before", GetLogData(row, 0));
                break;
            }
        }