| File: ServerProtocol\CompletedServerResponse.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> /// Represents a Response from the server. A response is as follows. /// /// Field Name Type Size (bytes) /// -------------------------------------------------- /// Length UInteger 4 /// ReturnCode Integer 4 /// Output String Variable /// ErrorOutput String Variable /// /// Strings are encoded via a character count prefix as a /// 32-bit integer, followed by an array of characters. /// /// </summary> internal sealed class CompletedServerResponse : ServerResponse { public readonly int ReturnCode; public readonly bool Utf8Output; public readonly string Output; public readonly string ErrorOutput; public CompletedServerResponse(int returnCode, bool utf8output, string output, string error) { ReturnCode = returnCode; Utf8Output = utf8output; Output = output; ErrorOutput = error; } public override ResponseType Type => ResponseType.Completed; public static CompletedServerResponse Create(BinaryReader reader) { var returnCode = reader.ReadInt32(); var utf8Output = reader.ReadBoolean(); var output = ServerProtocol.ReadLengthPrefixedString(reader); var errorOutput = ServerProtocol.ReadLengthPrefixedString(reader); return new CompletedServerResponse(returnCode, utf8Output, output, errorOutput); } protected override void AddResponseBody(BinaryWriter writer) { writer.Write(ReturnCode); writer.Write(Utf8Output); ServerProtocol.WriteLengthPrefixedString(writer, Output); ServerProtocol.WriteLengthPrefixedString(writer, ErrorOutput); } } }