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); }
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; } }
public bool TryGet(Guid uid, out IProfilingTarget item) { lock (Lock) { VerifyDisposed(); return(_collection.TryGetValue(uid, out item)); } }
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>(); }
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); }
public ProfilingTargetContent(IProfilingTarget profilingTarget, StartPageViewModel page) { _profilingTarget = profilingTarget; _pageViewModel = page; }
public static IProfilingTargetAdapter GetWinAdapter(this IProfilingTarget profilingTarget) { return((IProfilingTargetAdapter)profilingTarget.GetRealAdapter()); }
public bool CanCreateConfiguration(IProfilingTarget profilingTarget) { return(profilingTarget != null); }
public void CreateConfiguration(IProfilingTarget profilingTarget) { Start.StartPageViewModel startPageViewModel = new Start.StartPageViewModel(_application, profilingTarget); _application.ViewModelManager.ShowDialog(startPageViewModel); }