/// <summary> /// Serializes this instance to a given <paramref name="writer"/>. /// </summary> public void Serialize(BuildXLWriter writer) { writer.Write(m_length); writer.WriteNullableString(m_value); writer.WriteNullableString(m_fileName); writer.Write(m_encoding); writer.Write(m_fileStorage, (w, v) => SandboxedProcessStandardFiles.From(v).Serialize(w)); writer.WriteCompact((uint)m_file); writer.Write(m_exception, (w, v) => { w.WriteNullableString(v.Message); w.WriteCompact((uint)v.RootCause); }); }
/// <nodoc /> public void Serialize(Stream stream) { using (var writer = new BuildXLWriter(false, stream, true, true)) { writer.WriteNullableString(m_arguments); writer.WriteNullableString(m_commandLine); writer.Write(DisableConHostSharing); writer.WriteNullableString(FileName); writer.Write(StandardInputEncoding, (w, v) => w.Write(v)); writer.Write(StandardOutputEncoding, (w, v) => w.Write(v)); writer.Write(StandardErrorEncoding, (w, v) => w.Write(v)); writer.WriteNullableString(WorkingDirectory); writer.Write( EnvironmentVariables, (w, v) => w.WriteReadOnlyList( v.ToDictionary().ToList(), (w2, kvp) => { w2.Write(kvp.Key); w2.Write(kvp.Value); })); writer.Write( AllowedSurvivingChildProcessNames, (w, v) => w.WriteReadOnlyList(v, (w2, v2) => w2.Write(v2))); writer.Write(MaxLengthInMemory); writer.Write(Timeout, (w, v) => w.Write(v)); writer.Write(NestedProcessTerminationTimeout); writer.Write(PipSemiStableHash); writer.WriteNullableString(TimeoutDumpDirectory); writer.Write((byte)SandboxKind); writer.WriteNullableString(PipDescription); if (SandboxedProcessStandardFiles == null) { SandboxedProcessStandardFiles.From(FileStorage).Serialize(writer); } else { SandboxedProcessStandardFiles.Serialize(writer); } writer.Write(StandardInputSourceInfo, (w, v) => v.Serialize(w)); writer.Write(StandardObserverDescriptor, (w, v) => v.Serialize(w)); // File access manifest should be serialize the last. writer.Write(FileAccessManifest, (w, v) => FileAccessManifest.Serialize(stream)); } }