| File: ServerProtocol\RequestArgument.cs | Web Access |
| Project: src\sdk\src\RazorSdk\Tool\Microsoft.NET.Sdk.Razor.Tool.csproj (rzc) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace Microsoft.NET.Sdk.Razor.Tool { /// <summary> /// A command line argument to the compilation. /// An argument is formatted as follows: /// /// Field Name Type Size (bytes) /// -------------------------------------------------- /// ID UInteger 4 /// Index UInteger 4 /// Value String Variable /// /// Strings are encoded via a length prefix as a signed /// 32-bit integer, followed by an array of characters. /// </summary> internal readonly struct RequestArgument { public readonly ArgumentId Id; public readonly int ArgumentIndex; public readonly string Value; public RequestArgument(ArgumentId argumentId, int argumentIndex, string value) { Id = argumentId; ArgumentIndex = argumentIndex; Value = value; } public static RequestArgument ReadFromBinaryReader(BinaryReader reader) { var argId = (ArgumentId)reader.ReadInt32(); var argIndex = reader.ReadInt32(); var value = ServerProtocol.ReadLengthPrefixedString(reader); return new RequestArgument(argId, argIndex, value); } public void WriteToBinaryWriter(BinaryWriter writer) { writer.Write((int)Id); writer.Write(ArgumentIndex); ServerProtocol.WriteLengthPrefixedString(writer, Value); } public enum ArgumentId { // The current directory of the client CurrentDirectory = 0x51147221, // A comment line argument. The argument index indicates which one (0 .. N) CommandLineArgument, // Request a longer keep alive time for the server KeepAlive, // Request a server shutdown from the client Shutdown, // The directory to use for temporary operations. TempDirectory, } public override string ToString() { return $"{Id} {Value}"; } } }