private void InitializeCommon(AutomationEngine engine, PSHost hostInterface) { this._engine = engine; if (!_assemblyEventHandlerSet) { lock (lockObject) { if (!_assemblyEventHandlerSet) { AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(ExecutionContext.PowerShellAssemblyResolveHandler); _assemblyEventHandlerSet = true; } } } this._debugger = new System.Management.Automation.Debugger(this); this.eventManager = new PSLocalEventManager(this); this.transactionManager = new PSTransactionManager(); this.myHostInterface = hostInterface as System.Management.Automation.Internal.Host.InternalHost; if (this.myHostInterface == null) { this.myHostInterface = new System.Management.Automation.Internal.Host.InternalHost(hostInterface, this); } this._assemblyCache = new Dictionary <string, Assembly>(); this._topLevelSessionState = this._engineSessionState = new SessionStateInternal(this); if (this._authorizationManager == null) { this._authorizationManager = new System.Management.Automation.AuthorizationManager(null); } this._modules = new ModuleIntrinsics(this); }
internal void ResetManagers() { this._debugger = new System.Management.Automation.Debugger(this); if (this.eventManager != null) { this.eventManager.Dispose(); } this.eventManager = new PSLocalEventManager(this); if (this.transactionManager != null) { this.transactionManager.Dispose(); } this.transactionManager = new PSTransactionManager(); }
internal void SubscribeEvents(ServerSteppablePipelineDriver driver) { lock (this.syncObject) { if (!this.initialized) { this.eventManager = driver.LocalPowerShell.Runspace.Events as PSLocalEventManager; if (this.eventManager != null) { this.startSubscriber = this.eventManager.SubscribeEvent(this, "StartSteppablePipeline", Guid.NewGuid().ToString(), null, new PSEventReceivedEventHandler(this.HandleStartEvent), true, false, true, 0); this.processSubscriber = this.eventManager.SubscribeEvent(this, "RunProcessRecord", Guid.NewGuid().ToString(), null, new PSEventReceivedEventHandler(this.HandleProcessRecord), true, false, true, 0); } this.initialized = true; } } }
private void HandleIdleEvent(object sender, EventArgs args) { Runspace runspaceUsedToInvokePowerShell = this.dsHandler.RunspaceUsedToInvokePowerShell; if (runspaceUsedToInvokePowerShell != null) { PSLocalEventManager events = runspaceUsedToInvokePowerShell.Events as PSLocalEventManager; if (events != null) { foreach (PSEventSubscriber subscriber in events.Subscribers) { events.DrainPendingActions(subscriber); } } } }
/// <summary> /// Handles the PSDataCollection idle event /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void HandleIdleEvent(object sender, EventArgs args) { Runspace rs = DataStructureHandler.RunspaceUsedToInvokePowerShell; if (rs != null) { PSLocalEventManager events = (object)rs.Events as PSLocalEventManager; if (events != null) { foreach (PSEventSubscriber subscriber in events.Subscribers) { // Use the synchronous version events.DrainPendingActions(subscriber); } } } }
internal void RunspaceClosingNotification() { if (this.RunspaceConfiguration != null) { this.RunspaceConfiguration.Unbind(this); } this.EngineSessionState.RunspaceClosingNotification(); if (this.eventManager != null) { this.eventManager.Dispose(); } this.eventManager = null; if (this.transactionManager != null) { this.transactionManager.Dispose(); } this.transactionManager = null; }
internal void SubscribeEvents(ServerSteppablePipelineDriver driver) { lock (_syncObject) { if (!_initialized) { _eventManager = (object)driver.LocalPowerShell.Runspace.Events as PSLocalEventManager; if (_eventManager != null) { _startSubscriber = _eventManager.SubscribeEvent(this, "StartSteppablePipeline", Guid.NewGuid().ToString(), null, new PSEventReceivedEventHandler(this.HandleStartEvent), true, false, true); _processSubscriber = _eventManager.SubscribeEvent(this, "RunProcessRecord", Guid.NewGuid().ToString(), null, new PSEventReceivedEventHandler(this.HandleProcessRecord), true, false, true); } _initialized = true; } } }