| File: Coordinator\Messages\ServerMessage.cs | Web Access |
| Project: src\msbuild\src\Framework\Microsoft.Build.Framework.csproj (Microsoft.Build.Framework) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.IO; namespace Microsoft.Build.Framework.Coordinator; /// <summary> /// Base type for all messages sent from the coordinator to an MSBuild client. /// </summary> internal abstract partial record ServerMessage : Message<ServerMessageType> { protected ServerMessage(ServerMessageType messageType) : base(messageType) { } public static ServerMessage ReadFrom(BinaryReader reader) { (ServerMessageType messageType, bool hasExtendedFields) = ReadTypeByte(reader); Factory factory = Factory.FromMessageType(messageType); byte extendedFields = hasExtendedFields ? ReadExtendedFieldsByte(reader) : (byte)0; // The marker bit is only legal for message types that declare a supported extended-field mask. // The factory validates that the actual field bits are within that mask. Assumed.False(hasExtendedFields && !factory.SupportsExtendedFields, $"Message type {factory.MessageType} does not support extended fields."); return factory.Create(reader, extendedFields); } }