| File: Commands\Test\MTP\IPC\Serializers\ServerControlMessageSerializer.cs | Web Access |
| Project: src\sdk\src\Cli\dotnet\dotnet.csproj (dotnet) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.DotNet.Cli.Commands.Test.IPC.Models; namespace Microsoft.DotNet.Cli.Commands.Test.IPC.Serializers; internal sealed class ServerControlMessageSerializer : BaseSerializer, INamedPipeSerializer { public int Id => ServerControlMessageFieldsId.MessagesSerializerId; public object Deserialize(Stream stream) { byte kind = 0; ushort fieldCount = ReadUShort(stream); for (int i = 0; i < fieldCount; i++) { ushort fieldId = ReadUShort(stream); int fieldSize = ReadInt(stream); if (fieldId == ServerControlMessageFieldsId.Kind) { kind = ReadByte(stream); if (fieldSize > 1) { SetPosition(stream, stream.Position + fieldSize - 1); } } else { SetPosition(stream, stream.Position + fieldSize); } } return new ServerControlMessage(kind); } public void Serialize(object objectToSerialize, Stream stream) { var message = (ServerControlMessage)objectToSerialize; WriteUShort(stream, 1); WriteField(stream, ServerControlMessageFieldsId.Kind, message.Kind); } }