コード例 #1
0
        /// <summary>
        /// Tries to read data from the <see cref="Payload"/> <see cref="MemoryStream"/>.
        /// </summary>
        /// <param name="data">The data object.</param>
        /// <returns>True if data was found.</returns>
        public Boolean TryGetData(out IProxyClientConfiguration data)
        {
            data = default;

            if (TryGetData(out FileInfo testAssembly) &&
                TryGetData(out Boolean autoShutdown) &&
                TryGetData(out Boolean writeReport) &&
                TryGetData(out TestModeOverrides assemblyModeOverride) &&
                TryGetData(out Int32 runtimesCount))
            {
                RuntimeInfo[] availableRuntimes = new RuntimeInfo[runtimesCount];

                for (Int32 i = 0; i < runtimesCount; i++)
                {
                    if (TryGetData(out FrameworkIdentifiers framework) &&
                        TryGetData(out String _version) &&
                        Version.TryParse(_version, out Version version))
                    {
                        try {
                            availableRuntimes[i] = new RuntimeInfo(framework, version);
                        } catch (Exception ex) {
                            _log.Error($"Failed to read {typeof(RuntimeInfo).Format()}", ex);

                            return(false);
                        }
                    }
コード例 #2
0
        internal ProxyClientConfiguration(IProxyClientConfiguration original) : base(original)
        {
            Throw.If.Object.IsNull(original, nameof(original));

            AssemblyModeOverride = original.AssemblyModeOverride;
            AvailableRuntimes    = original.AvailableRuntimes;
            SelectedRuntimes     = original.SelectedRuntimes;
            WorkerDirectory      = original.WorkerDirectory;
            WorkerExecutableName = original.WorkerExecutableName;
            Factory.Instance.Copy(out IWorkerRemoteConfiguration remoteConfig, original.WorkerRemoteConfiguration);
            WorkerRemoteConfiguration = remoteConfig;
        }
コード例 #3
0
        internal WorkerRemoteInfo(IProxyClientConfiguration proxyConfig, RuntimeInfo runtime)
        {
            Throw.If.Object.IsNull(proxyConfig, nameof(proxyConfig));
            Throw.If.Object.IsNull(runtime, nameof(runtime));

            Runtime = runtime;
            ProcessorArchitecture architecture = Environment.Is64BitProcess ? ProcessorArchitecture.Amd64 : ProcessorArchitecture.X86;

            Factory.Instance.Copy(out IWorkerRemoteConfiguration configuration, proxyConfig.WorkerRemoteConfiguration);
            Configuration            = configuration;
            Configuration.Executable = new FileInfo(Path.Combine(proxyConfig.WorkerDirectory.FullName, architecture.ToString(), $"{Runtime.Framework}{Runtime.Version}", proxyConfig.WorkerExecutableName));
        }
コード例 #4
0
        /// <summary>
        /// Appends <paramref name="data"/> to the <see cref="Payload"/> <see cref="MemoryStream"/>.
        /// </summary>
        /// <param name="data">The data object.</param>
        /// <returns>The current <see cref="IMessage"/>.</returns>
        public IMessage Append(IProxyClientConfiguration data)
        {
            Append(data.TestAssembly);
            Append(data.AutoShutdown);
            Append(data.WriteReport);

            Append(data.AssemblyModeOverride);
            Append(data.AvailableRuntimes.Count());

            foreach (RuntimeInfo runtime in data.AvailableRuntimes)
            {
                Append(runtime.Framework);
                Append(runtime.Version.ToString());
            }

            Append(data.SelectedRuntimes);
            Append(data.WorkerDirectory);
            Append(data.WorkerExecutableName);
            Append(data.WorkerRemoteConfiguration);

            return(this);
        }
コード例 #5
0
 public void Create(out IWorkerRemoteInfo @object, IProxyClientConfiguration configuration, RuntimeInfo runtime) => @object = new WorkerRemoteInfo(configuration, runtime);
コード例 #6
0
 public void Copy(out IProxyClientConfiguration @object, IProxyClientConfiguration original) => @object = new ProxyClientConfiguration(original);
コード例 #7
0
 public void Create(out IProxyClientConfiguration @object) => @object = new ProxyClientConfiguration();