/// <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); } }
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; }
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)); }
/// <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); }
public void Create(out IWorkerRemoteInfo @object, IProxyClientConfiguration configuration, RuntimeInfo runtime) => @object = new WorkerRemoteInfo(configuration, runtime);
public void Copy(out IProxyClientConfiguration @object, IProxyClientConfiguration original) => @object = new ProxyClientConfiguration(original);
public void Create(out IProxyClientConfiguration @object) => @object = new ProxyClientConfiguration();