Ejemplo n.º 1
0
 protected virtual IAsyncResult CoreOpen(bool isAsync, AsyncCallback callback, object asyncState)
 {
     lock (this.syncObject)
     {
         this.AssertIfStateIsBeforeOpen();
         this.stateInfo = new System.Management.Automation.RunspacePoolStateInfo(RunspacePoolState.Opening, null);
     }
     this.RaiseStateChangeEvent(this.stateInfo);
     if (isAsync)
     {
         AsyncResult state = new RunspacePoolAsyncResult(this.instanceId, callback, asyncState, true);
         ThreadPool.QueueUserWorkItem(new WaitCallback(this.OpenThreadProc), state);
         return state;
     }
     this.OpenHelper();
     return null;
 }
Ejemplo n.º 2
0
 private void SetReconnectAsCompleted()
 {
     if ((this.reconnectAsyncResult != null) && !this.reconnectAsyncResult.IsCompleted)
     {
         this.reconnectAsyncResult.SetAsCompleted(base.stateInfo.Reason);
         this.reconnectAsyncResult = null;
     }
 }
Ejemplo n.º 3
0
 private IAsyncResult CoreClose(bool isAsync, AsyncCallback callback, object asyncState)
 {
     lock (this.syncObject)
     {
         if (((this.stateInfo.State == RunspacePoolState.Closed) || (this.stateInfo.State == RunspacePoolState.Broken)) || (((this.stateInfo.State == RunspacePoolState.Closing) || (this.stateInfo.State == RunspacePoolState.Disconnecting)) || (this.stateInfo.State == RunspacePoolState.Disconnected)))
         {
             if (isAsync)
             {
                 RunspacePoolAsyncResult result = new RunspacePoolAsyncResult(this.instanceId, callback, asyncState, false);
                 result.SetAsCompleted(null);
                 return result;
             }
             return null;
         }
         this.stateInfo = new System.Management.Automation.RunspacePoolStateInfo(RunspacePoolState.Closing, null);
     }
     this.RaiseStateChangeEvent(this.stateInfo);
     if (isAsync)
     {
         RunspacePoolAsyncResult state = new RunspacePoolAsyncResult(this.instanceId, callback, asyncState, false);
         ThreadPool.QueueUserWorkItem(new WaitCallback(this.CloseThreadProc), state);
         return state;
     }
     this.CloseHelper();
     return null;
 }
Ejemplo n.º 4
0
 private void SetCloseAsCompleted()
 {
     this.DispatchTable.AbortAllCalls();
     if (this.closeAsyncResult != null)
     {
         this.closeAsyncResult.SetAsCompleted(base.stateInfo.Reason);
         this.closeAsyncResult = null;
     }
     else
     {
         this.SetOpenAsCompleted();
     }
 }
Ejemplo n.º 5
0
 protected override IAsyncResult CoreOpen(bool isAsync, AsyncCallback callback, object asyncState)
 {
     PSEtwLog.SetActivityIdForCurrentThread(base.InstanceId);
     PSEtwLog.LogOperationalVerbose(PSEventId.RunspacePoolOpen, PSOpcode.Open, PSTask.CreateRunspace, PSKeyword.UseAlwaysOperational, new object[0]);
     lock (base.syncObject)
     {
         base.AssertIfStateIsBeforeOpen();
         base.stateInfo = new RunspacePoolStateInfo(RunspacePoolState.Opening, null);
     }
     base.RaiseStateChangeEvent(base.stateInfo);
     RunspacePoolAsyncResult result = new RunspacePoolAsyncResult(base.instanceId, callback, asyncState, true);
     this.openAsyncResult = result;
     this.dataStructureHandler.CreateRunspacePoolAndOpenAsync();
     return result;
 }
Ejemplo n.º 6
0
 public override IAsyncResult BeginDisconnect(AsyncCallback callback, object state)
 {
     RunspacePoolState state2;
     if (!this.CanDisconnect)
     {
         throw PSTraceSource.NewInvalidOperationException("RunspacePoolStrings", "DisconnectNotSupportedOnServer", new object[0]);
     }
     bool flag = false;
     lock (base.syncObject)
     {
         state2 = base.stateInfo.State;
         if (state2 == RunspacePoolState.Opened)
         {
             RunspacePoolStateInfo newStateInfo = new RunspacePoolStateInfo(RunspacePoolState.Disconnecting, null);
             this.SetRunspacePoolState(newStateInfo);
             flag = true;
         }
     }
     if (flag)
     {
         base.RaiseStateChangeEvent(base.stateInfo);
     }
     if (state2 == RunspacePoolState.Opened)
     {
         this.disconnectAsyncResult = new RunspacePoolAsyncResult(base.instanceId, callback, state, false);
         this.dataStructureHandler.DisconnectPoolAsync();
         return this.disconnectAsyncResult;
     }
     InvalidRunspacePoolStateException exception = new InvalidRunspacePoolStateException(StringUtil.Format(RunspacePoolStrings.InvalidRunspacePoolState, RunspacePoolState.Opened, base.stateInfo.State), base.stateInfo.State, RunspacePoolState.Opened);
     throw exception;
 }
Ejemplo n.º 7
0
 public override IAsyncResult BeginConnect(AsyncCallback callback, object state)
 {
     RunspacePoolState state2;
     if (!this.AvailableForConnection)
     {
         throw PSTraceSource.NewInvalidOperationException("RunspacePoolStrings", "CannotConnect", new object[0]);
     }
     bool flag = false;
     lock (base.syncObject)
     {
         state2 = base.stateInfo.State;
         if (state2 == RunspacePoolState.Disconnected)
         {
             RunspacePoolStateInfo newStateInfo = new RunspacePoolStateInfo(RunspacePoolState.Connecting, null);
             this.SetRunspacePoolState(newStateInfo);
             flag = true;
         }
     }
     if (flag)
     {
         base.RaiseStateChangeEvent(base.stateInfo);
     }
     flag = false;
     if (state2 == RunspacePoolState.Disconnected)
     {
         RunspacePoolAsyncResult reconnectAsyncResult;
         if (this.canReconnect)
         {
             this.dataStructureHandler.ReconnectPoolAsync();
             this.reconnectAsyncResult = new RunspacePoolAsyncResult(base.instanceId, callback, state, false);
             reconnectAsyncResult = this.reconnectAsyncResult;
         }
         else
         {
             this.dataStructureHandler.ConnectPoolAsync();
             this.openAsyncResult = new RunspacePoolAsyncResult(base.instanceId, callback, state, false);
             reconnectAsyncResult = this.openAsyncResult;
         }
         if (flag)
         {
             base.RaiseStateChangeEvent(base.stateInfo);
         }
         return reconnectAsyncResult;
     }
     InvalidRunspacePoolStateException exception = new InvalidRunspacePoolStateException(StringUtil.Format(RunspacePoolStrings.InvalidRunspacePoolState, RunspacePoolState.Disconnected, base.stateInfo.State), base.stateInfo.State, RunspacePoolState.Disconnected);
     throw exception;
 }
Ejemplo n.º 8
0
 public override IAsyncResult BeginClose(AsyncCallback callback, object asyncState)
 {
     bool flag = false;
     bool flag2 = false;
     RunspacePoolStateInfo stateInfo = new RunspacePoolStateInfo(RunspacePoolState.BeforeOpen, null);
     RunspacePoolAsyncResult closeAsyncResult = null;
     lock (base.syncObject)
     {
         if ((base.stateInfo.State == RunspacePoolState.Closed) || (base.stateInfo.State == RunspacePoolState.Broken))
         {
             flag2 = true;
             closeAsyncResult = new RunspacePoolAsyncResult(base.instanceId, callback, asyncState, false);
         }
         else if (base.stateInfo.State == RunspacePoolState.BeforeOpen)
         {
             stateInfo = base.stateInfo = new RunspacePoolStateInfo(RunspacePoolState.Closed, null);
             flag = true;
             flag2 = true;
             this.closeAsyncResult = null;
             closeAsyncResult = new RunspacePoolAsyncResult(base.instanceId, callback, asyncState, false);
         }
         else if ((base.stateInfo.State == RunspacePoolState.Opened) || (base.stateInfo.State == RunspacePoolState.Opening))
         {
             stateInfo = base.stateInfo = new RunspacePoolStateInfo(RunspacePoolState.Closing, null);
             this.closeAsyncResult = new RunspacePoolAsyncResult(base.instanceId, callback, asyncState, false);
             closeAsyncResult = this.closeAsyncResult;
             flag = true;
         }
         else if (((base.stateInfo.State == RunspacePoolState.Disconnected) || (base.stateInfo.State == RunspacePoolState.Disconnecting)) || (base.stateInfo.State == RunspacePoolState.Connecting))
         {
             this.closeAsyncResult = new RunspacePoolAsyncResult(base.instanceId, callback, asyncState, false);
             closeAsyncResult = this.closeAsyncResult;
         }
         else if (base.stateInfo.State == RunspacePoolState.Closing)
         {
             return this.closeAsyncResult;
         }
     }
     if (flag)
     {
         base.RaiseStateChangeEvent(stateInfo);
     }
     if (!flag2)
     {
         this.dataStructureHandler.CloseRunspacePoolAsync();
         return closeAsyncResult;
     }
     closeAsyncResult.SetAsCompleted(null);
     return closeAsyncResult;
 }