Example #1
0
        public SessionSettings Handle(Guid configurationUid, int processId, ProcessPlatform processPlatform, uint profilingBeginTime, Guid agentApplicationUid)
        {
            Configuration configuration = (Configuration)_configurations[configurationUid];

            if (configuration == null)
            {
                throw new ConfigurationNotFoundException(configurationUid);
            }
            ConfigurationSettings   configurationSettings  = configuration.ConfigurationSettings;
            IProfilingTarget        profilingTarget        = _profilingTargets[configurationSettings.ProfilingTargetSettings.Uid];
            IProfilingTargetAdapter profilingTargetAdapter = profilingTarget.GetSafeAdapter();
            bool canStartProfiling = profilingTargetAdapter.CanStartProfiling(configurationSettings, processId);

            if (!canStartProfiling)
            {
                throw new TempException("Target process is not supported");
            }
            ActualizeConfigurationSettings(configurationSettings, processPlatform);
            Session session = (Session)_sessions.Create(configuration);

            session.StartProfiling(processId, agentApplicationUid, profilingBeginTime);
            SessionSettings sessionSettings = new SessionSettings(session.Uid, configurationSettings.ProfilingTargetSettings,
                                                                  configurationSettings.FrameworksSettings, configurationSettings.ProfilingTypesSettings, configurationSettings.GatewaySettings);

            sessionSettings.Validate();
            profilingTarget.GetSafeAdapter().ProfilingStarted(configurationSettings, sessionSettings, processId);
            return(sessionSettings);
        }
Example #2
0
        private void ActualizeConfigurationSettings(ConfigurationSettings configurationSettings, ProcessPlatform processPlatform)
        {
            //Actualize profiling target settings
            IProfilingTarget profilingTarget = _profilingTargets[configurationSettings.ProfilingTargetSettings.Uid];

            if (profilingTarget.HasAgent)
            {
                configurationSettings.ProfilingTargetSettings.AgentDll = profilingTarget.GetAgentDll(processPlatform);
            }
            //Actualize frameworks settings
            foreach (FrameworkSettings frameworkSettings in configurationSettings.FrameworksSettings)
            {
                IFramework framework = _frameworks[frameworkSettings.Uid];
                if (framework.HasAgent)
                {
                    frameworkSettings.AgentDll = framework.GetAgentDll(processPlatform);
                }
            }
            //Actualize profiling types settings
            foreach (ProfilingTypeSettings profilingTypeSettings in configurationSettings.ProfilingTypesSettings)
            {
                IProfilingType profilingType = _profilingTypes[profilingTypeSettings.Uid];
                if (profilingType.HasAgent)
                {
                    profilingTypeSettings.AgentDll = profilingType.GetAgentDll(processPlatform);
                }
                profilingTypeSettings.Dependencies = profilingType.Definition.Dependencies.Select(x => x.Uid).ToArray();
                profilingTypeSettings.FrameworkUid = profilingType.Definition.FrameworkUid;
            }
        }
Example #3
0
 public bool TryGet(Guid uid, out IProfilingTarget item)
 {
     lock (Lock)
     {
         VerifyDisposed();
         return(_collection.TryGetValue(uid, out item));
     }
 }
Example #4
0
 public StartPageViewModel(IMainApplication application, IProfilingTarget profilingTarget)
 {
     ProfilingTarget            = profilingTarget;
     Application                = application;
     ConfigurationSettings      = new ConfigurationSettings(profilingTarget.Definition.Uid);
     HostApplicationSelector    = new HostApplicationSelector(application.HostApplications);
     _startProfilingImmediately = true;
 }
 public Configuration(ConfigurationSettings configurationSettings, ConfigurationCollection configurations,
                      IProfilingTarget profilingTarget, IFrameworkCollection frameworks, Host.IApplication application)
 {
     _configurations        = configurations;
     _configurationSettings = configurationSettings;
     _profilingTarget       = profilingTarget;
     _frameworks            = frameworks;
     _application           = application;
     _controllers           = new List <IProfilingTargetController>();
 }
Example #6
0
 public IConfiguration Create(ConfigurationSettings settings)
 {
     lock (Lock)
     {
         VerifyDisposed();
         settings.Validate();
         if (_collection.ContainsKey(settings.ConfigurationUid))
         {
             throw new ConfigurationAlreadyExistsException(settings.ConfigurationUid);
         }
         IProfilingTarget profilingTarget = _profilingTargets[settings.ProfilingTargetSettings.Uid];
         Configuration    configuration   = new Configuration(settings, this, profilingTarget, _frameworks, _application);
         _collection.Add(configuration.Uid, configuration);
         _configurationCreatedEvent.Invoke(() => new ConfigurationEventArgs(configuration));
         return(configuration);
     }
 }
 public IProfilingTarget this[Guid uid]
 {
     get
     {
         lock (_collection)
         {
             VerifyDisposed();
             ProfilingTarget profilingTarget;
             if (_collection.TryGetValue(uid, out profilingTarget))
             {
                 return(profilingTarget);
             }
             IProfilingTarget remoteProfilingTarget = Execute(() => RemoteObject[uid]);
             profilingTarget = new ProfilingTarget(remoteProfilingTarget);
             _collection.Add(uid, profilingTarget);
             return(profilingTarget);
         }
     }
 }
 public bool TryGet(Guid uid, out IProfilingTarget item)
 {
     lock (_collection)
     {
         ProfilingTarget profilingTarget;
         if (_collection.TryGetValue(uid, out profilingTarget))
         {
             item = profilingTarget;
             return(true);
         }
         IProfilingTarget remoteProfilingTarget = null;
         if (Execute(() => RemoteObject.TryGet(uid, out remoteProfilingTarget)))
         {
             profilingTarget = new ProfilingTarget(remoteProfilingTarget);
             _collection.Add(uid, profilingTarget);
             item = profilingTarget;
             return(true);
         }
     }
     item = null;
     return(false);
 }
 public static IProfilingTargetAdapter GetSafeAdapter(this IProfilingTarget profilingTarget)
 {
     return((IProfilingTargetAdapter)profilingTarget);
 }
 public static IProfilingTargetAdapter GetRealAdapter(this IProfilingTarget profilingTarget)
 {
     return((IProfilingTargetAdapter)((IWrapper)profilingTarget).UndrelyingObject);
 }
Example #11
0
 public ProfilingTargetContent(IProfilingTarget profilingTarget, StartPageViewModel page)
 {
     _profilingTarget = profilingTarget;
     _pageViewModel   = page;
 }
 public static IProfilingTargetAdapter GetWinAdapter(this IProfilingTarget profilingTarget)
 {
     return((IProfilingTargetAdapter)profilingTarget.GetRealAdapter());
 }
Example #13
0
 public bool CanCreateConfiguration(IProfilingTarget profilingTarget)
 {
     return(profilingTarget != null);
 }
Example #14
0
 public void CreateConfiguration(IProfilingTarget profilingTarget)
 {
     Start.StartPageViewModel startPageViewModel = new Start.StartPageViewModel(_application, profilingTarget);
     _application.ViewModelManager.ShowDialog(startPageViewModel);
 }