コード例 #1
0
        public string GetEntryPoint(ProcessPlatform processPlatform, bool fullPath)
        {
            string entryPoint = string.Empty;

            if (string.IsNullOrEmpty(_entryPoint))
            {
                switch (processPlatform)
                {
                case ProcessPlatform.AnyCPU:
                    entryPoint = _entryPoint;
                    break;

                case ProcessPlatform.I386:
                    entryPoint = _entryPoint32;
                    break;

                case ProcessPlatform.X64:
                    entryPoint = _entryPoint64;
                    break;
                }
            }
            else
            {
                entryPoint = _entryPoint;
            }
            if (string.IsNullOrEmpty(entryPoint))
            {
                throw new TempException();
            }
            if (fullPath)
            {
                entryPoint = Path.Combine(BaseDirectory, entryPoint);
            }
            return(entryPoint);
        }
コード例 #2
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);
        }
コード例 #3
0
        public T Load <T>(ExportDefinition definition, ProcessPlatform platform)
        {
            _assemblyResolver.RegisterPath(definition.BaseDirectory);
            string entryPoint = definition.GetEntryPoint(platform, false);

            return(LoadAndInitialize <T>(entryPoint));
        }
コード例 #4
0
        public string GetAgentDll(ProcessPlatform processPlatform)
        {
            VerifyDisposed();
            ExportDefinition definition = Definition.Exports.FindByApplication(Constants.ApplicationCodeName.Agent);
            string           entryPoint = definition.GetEntryPoint(processPlatform, true);

            return(entryPoint);
        }
コード例 #5
0
 public string GetAgentDll(ProcessPlatform processPlatform)
 {
     return(Execute(() => RemoteObject.GetAgentDll(processPlatform)));
 }
コード例 #6
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;
            }
        }