diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-01-25 21:23:35 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-01-25 21:23:35 +0200 |
| commit | 2367c43d732aea2ea169f6fa5844fc877d96632d (patch) | |
| tree | bbd6e675392d6721ad74449c897a87c698ac34b5 /Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs | |
| parent | 89e7bce0f7241e210aefc9d902e11c8f3537ace9 (diff) | |
| download | Tango-2367c43d732aea2ea169f6fa5844fc877d96632d.tar.gz Tango-2367c43d732aea2ea169f6fa5844fc877d96632d.zip | |
Implemented Hangfire experiment.
Refactored Transporter to accept a configuration instead of multiple parameters on all request/response methods.
Refactored Transporter to automatically log request/response messaged based on configuration.
Fixed issue with ContinuousResponseAborted and external bridge.
Diffstat (limited to 'Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs')
| -rw-r--r-- | Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs | 740 |
1 files changed, 281 insertions, 459 deletions
diff --git a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs index cd320e023..5f8361256 100644 --- a/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs +++ b/Software/Visual_Studio/Tango.Integration/Operation/MachineOperator.cs @@ -174,26 +174,6 @@ namespace Tango.Integration.Operation public event EventHandler<CartridgeValidationEventArgs> CartridgeValidationRequestReceived; /// <summary> - /// Occurs when a request has been sent. - /// </summary> - public event EventHandler<IMessage> RequestSent; - - /// <summary> - /// Occurs when a response has been sent. - /// </summary> - public event EventHandler<IMessage> ResponseSent; - - /// <summary> - /// Occurs when a request has timed out. - /// </summary> - public event EventHandler<RequestFailedEventArgs> RequestFailed; - - /// <summary> - /// Occurs when a request response has been received. - /// </summary> - public event EventHandler<IMessage> ResponseReceived; - - /// <summary> /// Reports about the job printing preparation progress. /// </summary> public event EventHandler<PreparingJobProgressEventArgs> PreparingJobProgress; @@ -582,13 +562,12 @@ namespace Tango.Integration.Operation bool responseLogged = false; _diagnosticsSent = true; - SendContinuousRequest<StartDiagnosticsRequest, StartDiagnosticsResponse>(request).ObserveOn(new NewThreadScheduler()).Subscribe( + SendContinuousRequest<StartDiagnosticsRequest, StartDiagnosticsResponse>(request, new TransportContinuousRequestConfig() { ShouldLog = true }).ObserveOn(new NewThreadScheduler()).Subscribe( (response) => { if (!responseLogged) { _diagnosticsTime = DateTime.Now; - LogResponseReceived(response.Message); responseLogged = true; } else @@ -603,19 +582,12 @@ namespace Tango.Integration.Operation (ex) => { _diagnosticsSent = false; - - if (!(ex is ContinuousResponseAbortedException) && !(ex is TransporterDisconnectedException)) - { - LogRequestFailed(request, ex); - } }, () => { _diagnosticsSent = false; LogManager.Log("Diagnostics response completed!?", LogCategory.Warning); }); - - LogRequestSent(request); } else if (_diagnosticsSent) { @@ -627,14 +599,9 @@ namespace Tango.Integration.Operation try { - LogRequestSent(req); - var res = await SendRequest<StopDiagnosticsRequest, StopDiagnosticsResponse>(req); - LogResponseReceived(res.Message); - } - catch (Exception ex) - { - LogRequestFailed(req, ex); + var res = await SendRequest<StopDiagnosticsRequest, StopDiagnosticsResponse>(req, new TransportRequestConfig() { ShouldLog = true }); } + catch { } } } } @@ -652,33 +619,25 @@ namespace Tango.Integration.Operation bool responseLogged = false; _eventsSent = true; - SendContinuousRequest<StartEventsNotificationRequest, StartEventsNotificationResponse>(request).ObserveOn(new NewThreadScheduler()).Subscribe( + SendContinuousRequest<StartEventsNotificationRequest, StartEventsNotificationResponse>(request, new TransportContinuousRequestConfig() { ShouldLog = true }).ObserveOn(new NewThreadScheduler()).Subscribe( (response) => { OnEventsNotification(response); if (!responseLogged) { - LogResponseReceived(response.Message); responseLogged = true; } }, (ex) => { _eventsSent = false; - - if (!(ex is ContinuousResponseAbortedException) && !(ex is TransporterDisconnectedException)) - { - LogRequestFailed(request, ex); - } }, () => { _eventsSent = false; LogManager.Log("Events Notification response completed!?", LogCategory.Warning); }); - - LogRequestSent(request); } else if (_eventsSent) { @@ -690,14 +649,9 @@ namespace Tango.Integration.Operation try { - LogRequestSent(req); - var res = await SendRequest<StopEventsNotificationRequest, StopEventsNotificationResponse>(req); - LogResponseReceived(res.Message); - } - catch (Exception ex) - { - LogRequestFailed(req, ex); + var res = await SendRequest<StopEventsNotificationRequest, StopEventsNotificationResponse>(req, new TransportRequestConfig() { ShouldLog = true }); } + catch { } } } } @@ -715,14 +669,13 @@ namespace Tango.Integration.Operation bool responseLogged = false; _debugSent = true; - SendContinuousRequest<StartDebugLogRequest, StartDebugLogResponse>(request).ObserveOn(new NewThreadScheduler()) + SendContinuousRequest<StartDebugLogRequest, StartDebugLogResponse>(request, new TransportContinuousRequestConfig() { ShouldLog = true }).ObserveOn(new NewThreadScheduler()) .Subscribe ( (response) => { if (!responseLogged) { - LogResponseReceived(response.Message); responseLogged = true; } @@ -731,18 +684,11 @@ namespace Tango.Integration.Operation (ex) => { _debugSent = false; - - if (!(ex is ContinuousResponseAbortedException) && !(ex is TransporterDisconnectedException)) - { - LogRequestFailed(request, ex); - } }, () => { _debugSent = false; }); - - LogRequestSent(request); } else if (_debugSent) { @@ -754,14 +700,9 @@ namespace Tango.Integration.Operation try { - LogRequestSent(req); - var res = await SendRequest<StopDebugLogRequest, StopDebugLogResponse>(req); - LogResponseReceived(res.Message); - } - catch (Exception ex) - { - LogRequestFailed(req, ex); + var res = await SendRequest<StopDebugLogRequest, StopDebugLogResponse>(req, new TransportRequestConfig() { ShouldLog = true }); } + catch { } } } } @@ -779,33 +720,25 @@ namespace Tango.Integration.Operation bool responseLogged = false; _machineStatusSent = true; - SendContinuousRequest<StartMachineStatusUpdateRequest, StartMachineStatusUpdateResponse>(request).ObserveOn(new NewThreadScheduler()).Subscribe( + SendContinuousRequest<StartMachineStatusUpdateRequest, StartMachineStatusUpdateResponse>(request, new TransportContinuousRequestConfig() { ShouldLog = true }).ObserveOn(new NewThreadScheduler()).Subscribe( (response) => { OnMachineStatusChanged(response); if (!responseLogged) { - LogResponseReceived(response.Message); responseLogged = true; } }, (ex) => { _machineStatusSent = false; - - if (!(ex is ContinuousResponseAbortedException) && !(ex is TransporterDisconnectedException)) - { - LogRequestFailed(request, ex); - } }, () => { _machineStatusSent = false; LogManager.Log("Machine status update response completed!?", LogCategory.Warning); }); - - LogRequestSent(request); } else if (_machineStatusSent) { @@ -817,14 +750,9 @@ namespace Tango.Integration.Operation try { - LogRequestSent(req); - var res = await SendRequest<StopMachineStatusUpdateRequest, StopMachineStatusUpdateResponse>(req); - LogResponseReceived(res.Message); - } - catch (Exception ex) - { - LogRequestFailed(req, ex); + var res = await SendRequest<StopMachineStatusUpdateRequest, StopMachineStatusUpdateResponse>(req, new TransportRequestConfig() { ShouldLog = true }); } + catch { } } } } @@ -842,33 +770,25 @@ namespace Tango.Integration.Operation bool responseLogged = false; _threadLoadingSent = true; - SendContinuousRequest<StartThreadLoadingRequest, StartThreadLoadingResponse>(request).ObserveOn(new NewThreadScheduler()).Subscribe( + SendContinuousRequest<StartThreadLoadingRequest, StartThreadLoadingResponse>(request, new TransportContinuousRequestConfig() { ShouldLog = true }).ObserveOn(new NewThreadScheduler()).Subscribe( (response) => { OnThreadLoadingStatusChanged(response); if (!responseLogged) { - LogResponseReceived(response.Message); responseLogged = true; } }, (ex) => { _threadLoadingSent = false; - - if (!(ex is ContinuousResponseAbortedException) && !(ex is TransporterDisconnectedException)) - { - LogRequestFailed(request, ex); - } }, () => { _threadLoadingSent = false; LogManager.Log("Thread loading response completed!?", LogCategory.Warning); }); - - LogRequestSent(request); } else if (_threadLoadingSent) { @@ -880,14 +800,9 @@ namespace Tango.Integration.Operation try { - LogRequestSent(req); - var res = await SendRequest<StopThreadLoadingRequest, StopThreadLoadingResponse>(req); - LogResponseReceived(res.Message); - } - catch (Exception ex) - { - LogRequestFailed(req, ex); + var res = await SendRequest<StopThreadLoadingRequest, StopThreadLoadingResponse>(req, new TransportRequestConfig() { ShouldLog = true }); } + catch { } } } } @@ -1019,7 +934,7 @@ namespace Tango.Integration.Operation var r = SendRequest<ContinueThreadLoadingRequest, ContinueThreadLoadingResponse>(new ContinueThreadLoadingRequest() { ProcessParameters = process, - }).Result; + }, new TransportRequestConfig() { ShouldLog = true }).Result; } catch (Exception ex) { @@ -1041,24 +956,6 @@ namespace Tango.Integration.Operation } /// <summary> - /// Called when the request has been sent - /// </summary> - /// <param name="response">The request.</param> - protected virtual void OnRequestSent(IMessage request) - { - RequestSent?.Invoke(this, request); - } - - /// <summary> - /// Called when the response has been received - /// </summary> - /// <param name="response">The response.</param> - protected virtual void OnResponseReceived(IMessage response) - { - ResponseReceived?.Invoke(this, response); - } - - /// <summary> /// Called when a new request has been received. /// </summary> /// <param name="container">The request.</param> @@ -1077,24 +974,6 @@ namespace Tango.Integration.Operation } /// <summary> - /// Called when the response has been sent - /// </summary> - /// <param name="response">The response.</param> - protected virtual void OnResponseSent(IMessage response) - { - ResponseSent?.Invoke(this, response); - } - - /// <summary> - /// Called when the request has been failed - /// </summary> - /// <param name="request">The request.</param> - protected virtual void OnRequestFailed(IMessage request, Exception exception) - { - RequestFailed?.Invoke(this, new RequestFailedEventArgs(request, exception)); - } - - /// <summary> /// Called when the machine status has been changed /// </summary> /// <param name="status">The status.</param> @@ -1279,19 +1158,14 @@ namespace Tango.Integration.Operation if (State == TransportComponentState.Connected) { DisconnectRequest request = new DisconnectRequest(); - LogRequestSent(request); try { - var response = await SendRequest<DisconnectRequest, DisconnectResponse>(request); - LogResponseReceived(response.Message); + var response = await SendRequest<DisconnectRequest, DisconnectResponse>(request, new TransportRequestConfig() { ShouldLog = true }); Status = MachineStatuses.Disconnected; } - catch (Exception ex) - { - LogRequestFailed(request, ex); - } + catch { } } if (MachineEventsStateProvider != null) @@ -1323,16 +1197,13 @@ namespace Tango.Integration.Operation Password = "1234", UnixTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds() }; - LogRequestSent(request); try { - var response = await SendRequest<ConnectRequest, ConnectResponse>(request); + var response = await SendRequest<ConnectRequest, ConnectResponse>(request, new TransportRequestConfig() { ShouldLog = true }); SessionLogger.CreateSession(); - LogResponseReceived(response.Message); - _isPowerDownRequestInProgress = false; if (Status != MachineStatuses.Upgrading) @@ -1365,7 +1236,6 @@ namespace Tango.Integration.Operation } catch (Exception ex) { - LogRequestFailed(request, ex); await base.Disconnect(); throw ex; } @@ -1386,7 +1256,7 @@ namespace Tango.Integration.Operation try { - var res = await SendRequest<CurrentJobRequest, CurrentJobResponse>(new CurrentJobRequest()); + var res = await SendRequest<CurrentJobRequest, CurrentJobResponse>(new CurrentJobRequest(), new TransportRequestConfig() { ShouldLog = true }); if (res.Message.IsJobInProgress) { @@ -1418,7 +1288,7 @@ namespace Tango.Integration.Operation try { handler.CanCancel = false; - var result = await SendRequest<AbortJobRequest, AbortJobResponse>(new AbortJobRequest()); + var result = await SendRequest<AbortJobRequest, AbortJobResponse>(new AbortJobRequest(), new TransportRequestConfig() { ShouldLog = true }); handler.IsCanceled = true; OnPrintingAborted(handler, originalJob); handler.RaiseCanceled(); @@ -1435,91 +1305,88 @@ namespace Tango.Integration.Operation RunningJobStatus = s; }; - LogRequestSent(request); bool responseLogged = false; Thread.Sleep(500); //Just wait maybe Shlomo is getting this message to fast after restart ? bool completed = false; - SendContinuousRequest<ResumeCurrentJobRequest, ResumeCurrentJobResponse>(request, null, ContinuousRequestTimeout).Subscribe((response) => - { - if (!completed) - { - if (!responseLogged) - { - if (_last_job_status != null) - { - _last_job_status.IsCanceled = false; - _last_job_status.IsCompleted = false; - _last_job_status.IsFailed = false; - handler.Status = _last_job_status; - } - } + SendContinuousRequest<ResumeCurrentJobRequest, ResumeCurrentJobResponse>(request, new TransportContinuousRequestConfig() { ContinuousTimeout = ContinuousRequestTimeout, ShouldLog = true }).Subscribe((response) => + { + if (!completed) + { + if (!responseLogged) + { + if (_last_job_status != null) + { + _last_job_status.IsCanceled = false; + _last_job_status.IsCompleted = false; + _last_job_status.IsFailed = false; + handler.Status = _last_job_status; + } + } - handler.RaiseStatusReceived(response.Message.Status); + handler.RaiseStatusReceived(response.Message.Status); - if (!responseLogged) - { - Status = MachineStatuses.GettingReady; - responseLogged = true; - RunningJob = originalJob; - OnPrintingStarted(handler, originalJob); - LogResponseReceived(response.Message); - } + if (!responseLogged) + { + Status = MachineStatuses.GettingReady; + responseLogged = true; + RunningJob = originalJob; + OnPrintingStarted(handler, originalJob); + } - if (JobHandlingMode == JobHandlerModes.SettingUp) - { - if (response.Message.Status.Progress > processParameters.DryerBufferLengthMeters) - { - if (!completed) - { - Status = MachineStatuses.Printing; - } - } - } - else - { - if (response.Message.Status.Progress > 0) - { - if (!completed) - { - Status = MachineStatuses.Printing; - } - } - } - } - }, (ex) => - { - if (!completed) - { - completed = true; - if (!(ex is ContinuousResponseAbortedException)) - { - Status = MachineStatuses.ReadyToDye; + if (JobHandlingMode == JobHandlerModes.SettingUp) + { + if (response.Message.Status.Progress > processParameters.DryerBufferLengthMeters) + { + if (!completed) + { + Status = MachineStatuses.Printing; + } + } + } + else + { + if (response.Message.Status.Progress > 0) + { + if (!completed) + { + Status = MachineStatuses.Printing; + } + } + } + } + }, (ex) => + { + if (!completed) + { + completed = true; + if (!(ex is ContinuousResponseAbortedException)) + { + Status = MachineStatuses.ReadyToDye; - if (!handler.IsCanceled) - { - OnPrintingFailed(handler, originalJob, ex); - handler.RaiseFailed(ex); - LogRequestFailed(request, ex); - } - } - else - { - Status = MachineStatuses.ReadyToDye; - } - } - }, () => - { - if (!completed) - { - completed = true; - Status = MachineStatuses.ReadyToDye; - OnPrintingCompleted(handler, originalJob); - handler.RaiseCompleted(); - } - }); + if (!handler.IsCanceled) + { + OnPrintingFailed(handler, originalJob, ex); + handler.RaiseFailed(ex); + } + } + else + { + Status = MachineStatuses.ReadyToDye; + } + } + }, () => + { + if (!completed) + { + completed = true; + Status = MachineStatuses.ReadyToDye; + OnPrintingCompleted(handler, originalJob); + handler.RaiseCompleted(); + } + }); return handler; }); @@ -1538,37 +1405,37 @@ namespace Tango.Integration.Operation /// Logs the request sent. /// </summary> /// <param name="message">The message.</param> - protected void LogRequestSent(IMessage message) - { - if (!(message is FileChunkUploadRequest) && !(message is FileDownloadRequest)) - { - LogManager.Log($"{GetExtendedComponentName()}: Sending request '{message.GetType().Name}'...\n{message.ToJsonString()}"); - OnRequestSent(message); - } - } + //protected void LogRequestSent(IMessage message) + //{ + // if (!(message is FileChunkUploadRequest) && !(message is FileDownloadRequest)) + // { + // //LogManager.Log($"{GetExtendedComponentName()}: Sending request '{message.GetType().Name}'...\n{message.ToJsonString()}"); + // OnRequestSent(message); + // } + //} /// <summary> /// Logs the request failed. /// </summary> /// <param name="message">The message.</param> - protected void LogRequestFailed(IMessage message, Exception ex) - { - LogManager.Log($"{GetExtendedComponentName()}: Request failed '{message.GetType().Name}'...\n{message.ToJsonString()}\n{ex.ToString()}", LogCategory.Error); - OnRequestFailed(message, ex); - } + //protected void LogRequestFailed(IMessage message, Exception ex) + //{ + // //LogManager.Log($"{GetExtendedComponentName()}: Request failed '{message.GetType().Name}'...\n{message.ToJsonString()}\n{ex.ToString()}", LogCategory.Error); + // OnRequestFailed(message, ex); + //} /// <summary> /// Logs the response received. /// </summary> /// <param name="message">The message.</param> - protected void LogResponseReceived(IMessage message) - { - if (!(message is FileChunkUploadResponse) && !(message is FileDownloadResponse)) - { - LogManager.Log($"{GetExtendedComponentName()}: Response received '{message.GetType().Name}'...\n{message.ToJsonString()}"); - OnResponseReceived(message); - } - } + //protected void LogResponseReceived(IMessage message) + //{ + // if (!(message is FileChunkUploadResponse) && !(message is FileDownloadResponse)) + // { + // //LogManager.Log($"{GetExtendedComponentName()}: Response received '{message.GetType().Name}'...\n{message.ToJsonString()}"); + // OnResponseReceived(message); + // } + //} /// <summary> /// Creates a PMR job segment. @@ -1668,12 +1535,11 @@ namespace Tango.Integration.Operation request.JobTicket = ticket; - LogRequestSent(request); bool responseLogged = false; var previous_segments_length = job.Segments.Where(x => x.SegmentIndex < segment.SegmentIndex).Sum(x => x.Length); - SendContinuousRequest<JobRequest, JobResponse>(request, null, ContinuousRequestTimeout).Subscribe((response) => + SendContinuousRequest<JobRequest, JobResponse>(request, new TransportContinuousRequestConfig() { ContinuousTimeout = ContinuousRequestTimeout, ShouldLog = true }).Subscribe((response) => { response.Message.Status.Progress += previous_segments_length; @@ -1685,7 +1551,6 @@ namespace Tango.Integration.Operation Status = MachineStatuses.Printing; RunningJob = handler.Job; OnPrintingStarted(handler, handler.Job); - LogResponseReceived(response.Message); } }, (ex) => @@ -1698,7 +1563,6 @@ namespace Tango.Integration.Operation { OnPrintingFailed(handler, handler.Job, ex); handler.RaiseFailed(ex); - LogRequestFailed(request, ex); } } else @@ -2413,12 +2277,13 @@ namespace Tango.Integration.Operation if (handler.CanCancel) { handler.CanCancel = false; - + LogManager.Log("Aborting current job..."); LogManager.Log($"Aborting current gradient generation..."); GradientGenerationConfiguration.AbortCurrentGeneration(); if (fileUploadHandler != null) { + LogManager.Log("Job is currently uploading. Aborting file upload..."); await fileUploadHandler.Cancel(); fileUploadHandler = null; LogManager.Log("Job upload canceled."); @@ -2433,7 +2298,7 @@ namespace Tango.Integration.Operation { if (requestSent) { - var result = await SendRequest<AbortJobRequest, AbortJobResponse>(new AbortJobRequest()); + var result = await SendRequest<AbortJobRequest, AbortJobResponse>(new AbortJobRequest(), new TransportRequestConfig() { ShouldLog = true }); handler.IsCanceled = true; } @@ -2646,7 +2511,6 @@ namespace Tango.Integration.Operation Status = MachineStatuses.ReadyToDye; OnPrintingFailed(handler, clonedJob, ex); handler.RaiseFailed(ex); - LogRequestFailed(request, ex); return; } } @@ -2664,106 +2528,103 @@ namespace Tango.Integration.Operation _machineStatusBeforeJobStart = MachineStatus.Clone(); - LogRequestSent(request); bool responseLogged = false; bool completed = false; //Use this in case Shlomo is sending progress after completion. _jobHeatingStartDate = DateTime.UtcNow; - SendContinuousRequest<JobRequest, JobResponse>(request, null, ContinuousRequestTimeout.Add(TimeSpan.FromSeconds(3))).Subscribe((response) => - { - if (!completed) - { - handler.RaiseStatusReceived(response.Message.Status); - _last_job_status = handler.Status; + SendContinuousRequest<JobRequest, JobResponse>(request, new TransportContinuousRequestConfig() { ContinuousTimeout = ContinuousRequestTimeout.Add(TimeSpan.FromSeconds(3)), ShouldLog = true }).Subscribe((response) => + { + if (!completed) + { + handler.RaiseStatusReceived(response.Message.Status); + _last_job_status = handler.Status; - if (response.Message.Status.Progress > 0) - { - if (oldKeepAlive != UseKeepAlive) - { - UseKeepAlive = oldKeepAlive; - } + if (response.Message.Status.Progress > 0) + { + if (oldKeepAlive != UseKeepAlive) + { + UseKeepAlive = oldKeepAlive; + } - if (_jobActualStartDate == null) - { - _jobActualStartDate = DateTime.UtcNow; - } - } + if (_jobActualStartDate == null) + { + _jobActualStartDate = DateTime.UtcNow; + } + } - if (!responseLogged) - { - requestSent = true; - responseLogged = true; - LogResponseReceived(response.Message); - } + if (!responseLogged) + { + requestSent = true; + responseLogged = true; + } - if (JobHandlingMode == JobHandlerModes.SettingUp) - { - if (response.Message.Status.Progress > processParameters.DryerBufferLengthMeters) - { - if (!completed) - { - Status = MachineStatuses.Printing; - } - } - } - else - { - if (response.Message.Status.Progress > 0) - { - if (!completed) - { - Status = MachineStatuses.Printing; - } - } - } - } + if (JobHandlingMode == JobHandlerModes.SettingUp) + { + if (response.Message.Status.Progress > processParameters.DryerBufferLengthMeters) + { + if (!completed) + { + Status = MachineStatuses.Printing; + } + } + } + else + { + if (response.Message.Status.Progress > 0) + { + if (!completed) + { + Status = MachineStatuses.Printing; + } + } + } + } - }, (ex) => - { - if (!completed) - { - completed = true; + }, (ex) => + { + if (!completed) + { + completed = true; - UseKeepAlive = oldKeepAlive; + UseKeepAlive = oldKeepAlive; - if (!(ex is ContinuousResponseAbortedException)) - { - if (Status != MachineStatuses.Disconnected) - { - Status = MachineStatuses.ReadyToDye; - } + if (!(ex is ContinuousResponseAbortedException)) + { + if (Status != MachineStatuses.Disconnected) + { + Status = MachineStatuses.ReadyToDye; + } - if (!handler.IsCanceled) - { - SaveLastJobLiquidQuantities(originalJob, originalJob.Machine.Configuration, processParameters, handler); - OnPrintingFailed(handler, originalJob, ex); - handler.RaiseFailed(ex); - LogRequestFailed(request, ex); - } - } - else - { - if (Status != MachineStatuses.Disconnected) - { - Status = MachineStatuses.ReadyToDye; - } - } - } - }, () => - { - if (!completed) - { - completed = true; + if (!handler.IsCanceled) + { + SaveLastJobLiquidQuantities(originalJob, originalJob.Machine.Configuration, processParameters, handler); + OnPrintingFailed(handler, originalJob, ex); + handler.RaiseFailed(ex); + } + } + else + { + if (Status != MachineStatuses.Disconnected) + { + Status = MachineStatuses.ReadyToDye; + } + } + } + }, () => + { + if (!completed) + { + completed = true; - UseKeepAlive = oldKeepAlive; + UseKeepAlive = oldKeepAlive; - Status = MachineStatuses.ReadyToDye; - SaveLastJobLiquidQuantities(clonedJob, originalJob.Machine.Configuration, processParameters, handler); - OnPrintingCompleted(handler, clonedJob); - handler.RaiseCompleted(); - } - }); + Status = MachineStatuses.ReadyToDye; + SaveLastJobLiquidQuantities(clonedJob, originalJob.Machine.Configuration, processParameters, handler); + OnPrintingCompleted(handler, clonedJob); + handler.RaiseCompleted(); + } + }); }); return handler; @@ -2935,7 +2796,7 @@ namespace Tango.Integration.Operation { try { - var result = await SendRequest<StubAbortJobRequest, StubAbortJobResponse>(new StubAbortJobRequest()); + var result = await SendRequest<StubAbortJobRequest, StubAbortJobResponse>(new StubAbortJobRequest(), new TransportRequestConfig() { ShouldLog = true }); OnPrintingAborted(handler, originalJob); handler.RaiseCanceled(); } @@ -2950,44 +2811,41 @@ namespace Tango.Integration.Operation RunningJobStatus = s; }; - LogRequestSent(request); bool responseLogged = false; - SendContinuousRequest<StubJobRequest, StubJobResponse>(request, null, ContinuousRequestTimeout).Subscribe((response) => - { - handler.RaiseStatusReceived(response.Message.Status); + SendContinuousRequest<StubJobRequest, StubJobResponse>(request, new TransportContinuousRequestConfig() { ContinuousTimeout = ContinuousRequestTimeout, ShouldLog = true }).Subscribe((response) => + { + handler.RaiseStatusReceived(response.Message.Status); - if (!responseLogged) - { - responseLogged = true; - Status = MachineStatuses.Printing; - RunningJob = originalJob; - OnPrintingStarted(handler, originalJob); - LogResponseReceived(response.Message); - } - }, (ex) => - { - if (!(ex is ContinuousResponseAbortedException)) - { - Status = MachineStatuses.ReadyToDye; + if (!responseLogged) + { + responseLogged = true; + Status = MachineStatuses.Printing; + RunningJob = originalJob; + OnPrintingStarted(handler, originalJob); + } + }, (ex) => + { + if (!(ex is ContinuousResponseAbortedException)) + { + Status = MachineStatuses.ReadyToDye; - if (!handler.IsCanceled) - { - OnPrintingFailed(handler, originalJob, ex); - handler.RaiseFailed(ex); - LogRequestFailed(request, ex); - } - } - else - { - Status = MachineStatuses.ReadyToDye; - } - }, () => - { - Status = MachineStatuses.ReadyToDye; - OnPrintingCompleted(handler, originalJob); - handler.RaiseCompleted(); - }); + if (!handler.IsCanceled) + { + OnPrintingFailed(handler, originalJob, ex); + handler.RaiseFailed(ex); + } + } + else + { + Status = MachineStatuses.ReadyToDye; + } + }, () => + { + Status = MachineStatuses.ReadyToDye; + OnPrintingCompleted(handler, originalJob); + handler.RaiseCompleted(); + }); return handler; @@ -3010,13 +2868,10 @@ namespace Tango.Integration.Operation try { CurrentProcessParameters = processParameters; - LogRequestSent(request); - response = await SendRequest<UploadProcessParametersRequest, UploadProcessParametersResponse>(request); - LogResponseReceived(response); + response = await SendRequest<UploadProcessParametersRequest, UploadProcessParametersResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } catch (Exception ex) { - LogRequestFailed(request, ex); throw ex; } @@ -3116,13 +2971,10 @@ namespace Tango.Integration.Operation try { CurrentHardwareConfiguration = hardwareConfiguration; - LogRequestSent(request); - response = await SendRequest<UploadHardwareConfigurationRequest, UploadHardwareConfigurationResponse>(request); - LogResponseReceived(response); + response = await SendRequest<UploadHardwareConfigurationRequest, UploadHardwareConfigurationResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } catch (Exception ex) { - LogRequestFailed(request, ex); throw ex; } @@ -3140,13 +2992,10 @@ namespace Tango.Integration.Operation try { - LogRequestSent(request); - response = await SendRequest<MotorJoggingRequest, MotorJoggingResponse>(request); - LogResponseReceived(response); + response = await SendRequest<MotorJoggingRequest, MotorJoggingResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } catch (Exception ex) { - LogRequestFailed(request, ex); throw ex; } @@ -3160,8 +3009,7 @@ namespace Tango.Integration.Operation /// <returns></returns> public async Task<MotorAbortJoggingResponse> StopMotorJogging(MotorAbortJoggingRequest request) { - LogRequestSent(request); - return await SendRequest<MotorAbortJoggingRequest, MotorAbortJoggingResponse>(request); + return await SendRequest<MotorAbortJoggingRequest, MotorAbortJoggingResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } /// <summary> @@ -3171,8 +3019,7 @@ namespace Tango.Integration.Operation /// <returns></returns> public IObservable<MotorHomingResponse> StartMotorHoming(MotorHomingRequest request) { - LogRequestSent(request); - return SendContinuousRequest<MotorHomingRequest, MotorHomingResponse>(request, null, ContinuousRequestTimeout).Select(x => x.Message); + return SendContinuousRequest<MotorHomingRequest, MotorHomingResponse>(request, new TransportContinuousRequestConfig() { ContinuousTimeout = ContinuousRequestTimeout, ShouldLog = true }).Select(x => x.Message); } /// <summary> @@ -3182,8 +3029,7 @@ namespace Tango.Integration.Operation /// <returns></returns> public async Task<MotorAbortHomingResponse> StopMotorHoming(MotorAbortHomingRequest request) { - LogRequestSent(request); - return await SendRequest<MotorAbortHomingRequest, MotorAbortHomingResponse>(request); + return await SendRequest<MotorAbortHomingRequest, MotorAbortHomingResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } /// <summary> @@ -3193,8 +3039,7 @@ namespace Tango.Integration.Operation /// <returns></returns> public async Task<DispenserJoggingResponse> StartDispenserJogging(DispenserJoggingRequest request) { - LogRequestSent(request); - return await SendRequest<DispenserJoggingRequest, DispenserJoggingResponse>(request); + return await SendRequest<DispenserJoggingRequest, DispenserJoggingResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } /// <summary> @@ -3204,8 +3049,7 @@ namespace Tango.Integration.Operation /// <returns></returns> public async Task<DispenserAbortJoggingResponse> StopDispenserJogging(DispenserAbortJoggingRequest request) { - LogRequestSent(request); - return await SendRequest<DispenserAbortJoggingRequest, DispenserAbortJoggingResponse>(request); + return await SendRequest<DispenserAbortJoggingRequest, DispenserAbortJoggingResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } /// <summary> @@ -3215,8 +3059,7 @@ namespace Tango.Integration.Operation /// <returns></returns> public IObservable<DispenserHomingResponse> StartDispenserHoming(DispenserHomingRequest request) { - LogRequestSent(request); - return SendContinuousRequest<DispenserHomingRequest, DispenserHomingResponse>(request, null, ContinuousRequestTimeout).Select(x => x.Message); + return SendContinuousRequest<DispenserHomingRequest, DispenserHomingResponse>(request, new TransportContinuousRequestConfig() { ContinuousTimeout = ContinuousRequestTimeout, ShouldLog = true }).Select(x => x.Message); } /// <summary> @@ -3226,8 +3069,7 @@ namespace Tango.Integration.Operation /// <returns></returns> public async Task<DispenserAbortHomingResponse> StopDispenserHoming(DispenserAbortHomingRequest request) { - LogRequestSent(request); - return await SendRequest<DispenserAbortHomingRequest, DispenserAbortHomingResponse>(request); + return await SendRequest<DispenserAbortHomingRequest, DispenserAbortHomingResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } /// <summary> @@ -3237,8 +3079,7 @@ namespace Tango.Integration.Operation /// <returns></returns> public async Task<SetDigitalOutResponse> SetDigitalOut(SetDigitalOutRequest request) { - LogRequestSent(request); - return await SendRequest<SetDigitalOutRequest, SetDigitalOutResponse>(request); + return await SendRequest<SetDigitalOutRequest, SetDigitalOutResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } /// <summary> @@ -3248,8 +3089,7 @@ namespace Tango.Integration.Operation /// <returns></returns> public async Task<ThreadJoggingResponse> StartThreadJogging(ThreadJoggingRequest request) { - LogRequestSent(request); - return await SendRequest<ThreadJoggingRequest, ThreadJoggingResponse>(request); + return await SendRequest<ThreadJoggingRequest, ThreadJoggingResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } /// <summary> @@ -3259,8 +3099,7 @@ namespace Tango.Integration.Operation /// <returns></returns> public async Task<ThreadAbortJoggingResponse> StopThreadJogging(ThreadAbortJoggingRequest request) { - LogRequestSent(request); - return await SendRequest<ThreadAbortJoggingRequest, ThreadAbortJoggingResponse>(request); + return await SendRequest<ThreadAbortJoggingRequest, ThreadAbortJoggingResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } /// <summary> @@ -3270,8 +3109,7 @@ namespace Tango.Integration.Operation /// <returns></returns> public async Task<SetComponentValueResponse> SetComponentValue(SetComponentValueRequest request) { - LogRequestSent(request); - return await SendRequest<SetComponentValueRequest, SetComponentValueResponse>(request); + return await SendRequest<SetComponentValueRequest, SetComponentValueResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } /// <summary> @@ -3292,13 +3130,10 @@ namespace Tango.Integration.Operation try { - LogRequestSent(request); - response = await SendRequest<SetHeaterStateRequest, SetHeaterStateResponse>(request); - LogResponseReceived(response); + response = await SendRequest<SetHeaterStateRequest, SetHeaterStateResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } catch (Exception ex) { - LogRequestFailed(request, ex); throw ex; } @@ -3324,13 +3159,10 @@ namespace Tango.Integration.Operation try { - LogRequestSent(request); - response = await SendRequest<SetBlowerStateRequest, SetBlowerStateResponse>(request); - LogResponseReceived(response); + response = await SendRequest<SetBlowerStateRequest, SetBlowerStateResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } catch (Exception ex) { - LogRequestFailed(request, ex); throw ex; } @@ -3354,13 +3186,10 @@ namespace Tango.Integration.Operation try { - LogRequestSent(request); - response = await SendRequest<SetValveStateRequest, SetValveStateResponse>(request); - LogResponseReceived(response); + response = await SendRequest<SetValveStateRequest, SetValveStateResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } catch (Exception ex) { - LogRequestFailed(request, ex); throw ex; } @@ -3375,8 +3204,7 @@ namespace Tango.Integration.Operation public async Task<ResolveEventResponse> ResolveEvent(PMR.Diagnostics.EventType eventType) { ResolveEventRequest request = new ResolveEventRequest() { Type = eventType }; - LogRequestSent(request); - return await SendRequest<ResolveEventRequest, ResolveEventResponse>(request); + return await SendRequest<ResolveEventRequest, ResolveEventResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } /// <summary> @@ -3396,13 +3224,10 @@ namespace Tango.Integration.Operation Value = 0x0 }; - LogRequestSent(request); - response = await SendRequest<StubFpgaWriteRegRequest, StubFpgaWriteRegResponse>(request); - LogResponseReceived(response); + response = await SendRequest<StubFpgaWriteRegRequest, StubFpgaWriteRegResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } catch (Exception ex) { - LogRequestFailed(request, ex); throw ex; } @@ -3416,13 +3241,10 @@ namespace Tango.Integration.Operation Value = 0x1 }; - LogRequestSent(request); - response = await SendRequest<StubFpgaWriteRegRequest, StubFpgaWriteRegResponse>(request); - LogResponseReceived(response); + response = await SendRequest<StubFpgaWriteRegRequest, StubFpgaWriteRegResponse>(request, new TransportRequestConfig() { ShouldLog = true }); } catch (Exception ex) { - LogRequestFailed(request, ex); throw ex; } @@ -3707,7 +3529,7 @@ namespace Tango.Integration.Operation upgradeHandler.RaiseProgress(upgradeHandler.Total, FirmwareUpgradeStatus.Validating, "Validating version..."); var validateRequest = new ValidateVersionRequest(); validateRequest.Path = package_folder; - var validateResponse = SendRequest<ValidateVersionRequest, ValidateVersionResponse>(validateRequest, TimeSpan.FromSeconds(10)).Result; + var validateResponse = SendRequest<ValidateVersionRequest, ValidateVersionResponse>(validateRequest, new TransportRequestConfig() { Timeout = TimeSpan.FromSeconds(10), ShouldLog = true }).Result; activate(); } catch (Exception ex) @@ -3724,7 +3546,7 @@ namespace Tango.Integration.Operation upgradeHandler.RaiseProgress(upgradeHandler.Total, FirmwareUpgradeStatus.Activating, "Activating version..."); var activateRequest = new ActivateVersionRequest(); activateRequest.Path = package_folder; - var activateResponse = SendRequest<ActivateVersionRequest, ActivateVersionResponse>(activateRequest, TimeSpan.FromSeconds(10)).Result; + var activateResponse = SendRequest<ActivateVersionRequest, ActivateVersionResponse>(activateRequest, new TransportRequestConfig() { Timeout = TimeSpan.FromSeconds(10), ShouldLog = true }).Result; postActivation(); } catch (Exception ex) @@ -3788,7 +3610,7 @@ namespace Tango.Integration.Operation { var validateRequest = new ValidateVersionRequest(); validateRequest.Path = path; - await SendRequest<ValidateVersionRequest, ValidateVersionResponse>(validateRequest, TimeSpan.FromSeconds(10)); + await SendRequest<ValidateVersionRequest, ValidateVersionResponse>(validateRequest, new TransportRequestConfig() { Timeout = TimeSpan.FromSeconds(10), ShouldLog = true }); } /// <summary> @@ -3799,7 +3621,7 @@ namespace Tango.Integration.Operation { var activateRequest = new ActivateVersionRequest(); activateRequest.Path = path; - await SendRequest<ActivateVersionRequest, ActivateVersionResponse>(activateRequest, TimeSpan.FromSeconds(10)); + await SendRequest<ActivateVersionRequest, ActivateVersionResponse>(activateRequest, new TransportRequestConfig() { Timeout = TimeSpan.FromSeconds(10), ShouldLog = true }); } /// <summary> @@ -3819,7 +3641,7 @@ namespace Tango.Integration.Operation { _isPowerDownRequestInProgress = false; Thread.Sleep(2000); - var r = SendRequest<AbortPowerDownRequest, AbortPowerDownResponse>(new AbortPowerDownRequest()).Result; + var r = SendRequest<AbortPowerDownRequest, AbortPowerDownResponse>(new AbortPowerDownRequest(), new TransportRequestConfig() { ShouldLog = true }).Result; })); Task.Factory.StartNew(() => @@ -3828,31 +3650,31 @@ namespace Tango.Integration.Operation bool firstResponse = true; - SendContinuousRequest<StartPowerDownRequest, StartPowerDownResponse>(new StartPowerDownRequest(), RequestTimeout, TimeSpan.FromSeconds(5)).ObserveOn(new NewThreadScheduler()).Subscribe((response) => - { - if (firstResponse) - { - firstResponse = false; - Status = MachineStatuses.ShuttingDown; - } + SendContinuousRequest<StartPowerDownRequest, StartPowerDownResponse>(new StartPowerDownRequest(), new TransportContinuousRequestConfig() { ContinuousTimeout = TimeSpan.FromSeconds(2), ShouldLog = true }).ObserveOn(new NewThreadScheduler()).Subscribe((response) => + { + if (firstResponse) + { + firstResponse = false; + Status = MachineStatuses.ShuttingDown; + } - handler.RaiseStatusChanged(response); - }, (ex) => - { - if (_isPowerDownRequestInProgress) - { - _isPowerDownRequestInProgress = false; - LogManager.Log(ex, "Power down error."); - handler.RaiseFailed(ex); - } - }, () => - { - if (_isPowerDownRequestInProgress) - { - _isPowerDownRequestInProgress = false; - handler.RaiseCompleted(); - } - }); + handler.RaiseStatusChanged(response); + }, (ex) => + { + if (_isPowerDownRequestInProgress) + { + _isPowerDownRequestInProgress = false; + LogManager.Log(ex, "Power down error."); + handler.RaiseFailed(ex); + } + }, () => + { + if (_isPowerDownRequestInProgress) + { + _isPowerDownRequestInProgress = false; + handler.RaiseCompleted(); + } + }); }); PowerDownStarted?.Invoke(this, new PowerDownStartedEventArgs() |
