protected void UpdateRunspaceAvailability(RunspaceState runspaceState, bool raiseEvent) { System.Management.Automation.Runspaces.RunspaceAvailability runspaceAvailability = this.RunspaceAvailability; RemoteRunspace runspace = this as RemoteRunspace; ConnectCommandInfo info = (runspace != null) ? runspace.RemoteCommand : null; switch (runspaceAvailability) { case System.Management.Automation.Runspaces.RunspaceAvailability.None: if (runspaceState == RunspaceState.Opened) { this.RunspaceAvailability = ((info == null) && (this.GetCurrentlyRunningPipeline() == null)) ? System.Management.Automation.Runspaces.RunspaceAvailability.Available : System.Management.Automation.Runspaces.RunspaceAvailability.Busy; } break; case System.Management.Automation.Runspaces.RunspaceAvailability.Available: case System.Management.Automation.Runspaces.RunspaceAvailability.AvailableForNestedCommand: case System.Management.Automation.Runspaces.RunspaceAvailability.Busy: switch (runspaceState) { case RunspaceState.Closed: case RunspaceState.Closing: case RunspaceState.Broken: case RunspaceState.Disconnected: this.RunspaceAvailability = System.Management.Automation.Runspaces.RunspaceAvailability.None; goto Label_007D; } break; } Label_007D: if (raiseEvent && (this.RunspaceAvailability != runspaceAvailability)) { this.OnAvailabilityChanged(new RunspaceAvailabilityEventArgs(this.RunspaceAvailability)); } }
internal void UpdateRunspaceAvailability(System.Management.Automation.Runspaces.RunspaceAvailability availability, bool raiseEvent) { System.Management.Automation.Runspaces.RunspaceAvailability runspaceAvailability = this.RunspaceAvailability; this.RunspaceAvailability = availability; if (raiseEvent && (this.RunspaceAvailability != runspaceAvailability)) { this.OnAvailabilityChanged(new RunspaceAvailabilityEventArgs(this.RunspaceAvailability)); } }
protected void SetRunspaceState(System.Management.Automation.Runspaces.RunspaceState state, Exception reason) { lock (this.SyncRoot) { if (state != this.RunspaceState) { this._runspaceStateInfo = new System.Management.Automation.Runspaces.RunspaceStateInfo(state, reason); System.Management.Automation.Runspaces.RunspaceAvailability currentAvailability = this._runspaceAvailability; base.UpdateRunspaceAvailability(this._runspaceStateInfo.State, false); this._runspaceEventQueue.Enqueue(new RunspaceEventQueueItem(this._runspaceStateInfo.Clone(), currentAvailability, this._runspaceAvailability)); } } }
internal RunspaceAvailabilityEventArgs(System.Management.Automation.Runspaces.RunspaceAvailability runspaceAvailability) { this._runspaceAvailability = runspaceAvailability; }
internal RunspaceAvailabilityEventArgs(System.Management.Automation.Runspaces.RunspaceAvailability runspaceAvailability) { this._runspaceAvailability = runspaceAvailability; }
internal void RaiseAvailabilityChangedEvent(System.Management.Automation.Runspaces.RunspaceAvailability availability) { this.OnAvailabilityChanged(new RunspaceAvailabilityEventArgs(availability)); }
internal void UpdateRunspaceAvailability(PipelineState pipelineState, bool raiseEvent) { System.Management.Automation.Runspaces.RunspaceAvailability runspaceAvailability = this.RunspaceAvailability; switch (runspaceAvailability) { case System.Management.Automation.Runspaces.RunspaceAvailability.None: if (pipelineState == PipelineState.Running) { this.RunspaceAvailability = System.Management.Automation.Runspaces.RunspaceAvailability.Busy; } break; case System.Management.Automation.Runspaces.RunspaceAvailability.Available: switch (pipelineState) { case PipelineState.Running: this.RunspaceAvailability = System.Management.Automation.Runspaces.RunspaceAvailability.Busy; goto Label_0181; case PipelineState.Disconnected: this.RunspaceAvailability = System.Management.Automation.Runspaces.RunspaceAvailability.None; goto Label_0181; } break; case System.Management.Automation.Runspaces.RunspaceAvailability.AvailableForNestedCommand: switch (pipelineState) { case PipelineState.Running: this.RunspaceAvailability = System.Management.Automation.Runspaces.RunspaceAvailability.Busy; goto Label_0181; case PipelineState.Completed: this.RunspaceAvailability = this.InNestedPrompt ? System.Management.Automation.Runspaces.RunspaceAvailability.AvailableForNestedCommand : System.Management.Automation.Runspaces.RunspaceAvailability.Available; goto Label_0181; } break; case System.Management.Automation.Runspaces.RunspaceAvailability.Busy: switch (pipelineState) { case PipelineState.Stopped: case PipelineState.Completed: case PipelineState.Failed: if (this.InNestedPrompt || (!(this is RemoteRunspace) && this.Debugger.InBreakpoint)) { this.RunspaceAvailability = System.Management.Automation.Runspaces.RunspaceAvailability.AvailableForNestedCommand; } else { RemoteRunspace runspace = this as RemoteRunspace; ConnectCommandInfo info = (runspace != null) ? runspace.RemoteCommand : null; if (((pipelineState == PipelineState.Completed) || (pipelineState == PipelineState.Failed)) && (info != null)) { runspace.RunspacePool.RemoteRunspacePoolInternal.ConnectCommands = null; info = null; } Pipeline currentlyRunningPipeline = this.GetCurrentlyRunningPipeline(); if (currentlyRunningPipeline == null) { if (info == null) { if (runspace != null) { this.RunspaceAvailability = runspace.RunspacePool.RemoteRunspacePoolInternal.AvailableForConnection ? System.Management.Automation.Runspaces.RunspaceAvailability.Available : System.Management.Automation.Runspaces.RunspaceAvailability.Busy; } else { this.RunspaceAvailability = System.Management.Automation.Runspaces.RunspaceAvailability.Available; } } } else if (currentlyRunningPipeline.PipelineStateInfo.State == PipelineState.Running) { this.RunspaceAvailability = System.Management.Automation.Runspaces.RunspaceAvailability.Busy; } else { this.RunspaceAvailability = System.Management.Automation.Runspaces.RunspaceAvailability.Available; } } goto Label_0181; case PipelineState.Disconnected: this.RunspaceAvailability = System.Management.Automation.Runspaces.RunspaceAvailability.None; goto Label_0181; } break; } Label_0181: if (raiseEvent && (this.RunspaceAvailability != runspaceAvailability)) { this.OnAvailabilityChanged(new RunspaceAvailabilityEventArgs(this.RunspaceAvailability)); } }