public void ProcessRunspaceException(Runspace runspace, int attempt, InvalidRunspaceStateException e) { RunspaceStateInfo info = runspace.RunspaceStateInfo; if (info != null) { LOGGER.TraceEvent(TraceEventType.Warning, CAT_DEFAULT, "Runspace is in wrong state. Exception: {0}, State: {1}, Reason: {2}, Attempt number: {3}", e, info.State, info.Reason, attempt); } else { LOGGER.TraceEvent(TraceEventType.Warning, CAT_DEFAULT, "Runspace is in wrong state. Exception: {0}, Attempt number: {1}", e, attempt); } if (attempt == MAX_ATTEMPTS) { LOGGER.TraceEvent(TraceEventType.Error, CAT_DEFAULT, "Maximum number of attempts achieved, signalling the exception"); _runSpacePool.returnFailedRunspace(runspace); throw e; } else { runspace = _runSpacePool.getAnotherRunspace(runspace); } }
public static bool IsUsable(this RunspaceStateInfo runspaceStateInfo) { return(runspaceStateInfo.State switch { RunspaceState.Broken or RunspaceState.Closed or RunspaceState.Closing or RunspaceState.Disconnecting or RunspaceState.Disconnected => false, _ => true, });
public static void ThrowCancelledIfUnusable(this RunspaceStateInfo runspaceStateInfo) { if (!IsUsable(runspaceStateInfo)) { throw new OperationCanceledException(); } }
public RunspaceEventQueueItem( RunspaceStateInfo runspaceStateInfo, RunspaceAvailability currentAvailability, RunspaceAvailability newAvailability) { this.RunspaceStateInfo = runspaceStateInfo; this.CurrentRunspaceAvailability = currentAvailability; this.NewRunspaceAvailability = newAvailability; }
internal RunspaceStateInfo(RunspaceStateInfo runspaceStateInfo) { this._state = runspaceStateInfo.State; this._reason = runspaceStateInfo.Reason; }
internal RunspaceStateEventArgs(RunspaceStateInfo runspaceStateInfo) => this._runspaceStateInfo = runspaceStateInfo != null ? runspaceStateInfo : throw RunspaceStateEventArgs._trace.NewArgumentNullException(nameof(runspaceStateInfo));