Exemple #1
0
 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);
 }
Exemple #2
0
 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();
 }
Exemple #3
0
 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);
                    }
                }
            }
        }
Exemple #6
0
 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;
                }
            }
        }