Mercurial > hg > Database > Christie-sharp
view datagear/command/PutCommand.cs @ 69:959096e8786b
fix send data
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 02 Feb 2022 16:39:38 +0900 |
parents | dc3f59937772 |
children | 0f4fa15e5bcb |
line wrap: on
line source
using System; using System.IO; using Christie_net.datagear.dg; using MessagePack; using Microsoft.VisualBasic.CompilerServices; namespace Christie_net.datagear.command { public class PutCommand : Command { public PutCommand(CommandBuilder cb) : base(cb) { this.clazz = dg.GetClazz(); } public override void Execute() { } // commandとdata, dataSizeをMemoryStreamに変換する public override byte[] Convert() { MemoryStream stream = new MemoryStream(); try { byte[] command = MessagePackSerializer.Serialize(CreateRemoteMessage()); byte[] commandsize = MessagePackSerializer.Serialize(command.Length); if (commandsize.Length < 5) { byte[] newCommandsize = new byte[5]; Array.Copy(commandsize, newCommandsize, commandsize.Length); commandsize = newCommandsize; } byte[] data = new MessagePackDataGear<object>(dg.GetData()).GetMessagePack(); byte[] datasize = MessagePackSerializer.Serialize(data.Length); if (datasize.Length < 5) { byte[] newDatasize = new byte[5]; Array.Copy(datasize, newDatasize, datasize.Length); datasize = newDatasize; } // Debug // RemoteMessage msg = MessagePackSerializer.Deserialize<RemoteMessage>(command); // Console.WriteLine("serialize msg:" + msg); stream.Write(commandsize, 0, commandsize.Length); stream.Write(command,0, command.Length); stream.Write(datasize, 0, datasize.Length); stream.Write(data, 0, data.Length); } catch (IOException e) { Console.WriteLine(e.StackTrace); } return stream.ToArray(); } } }