protected override Task WriteToStreamBondedAsync(Stream stream, IBonded value) { var sjw = new SimpleJsonWriter(stream); value.Serialize(sjw); sjw.Flush(); return(Task.CompletedTask); }
internal static ArraySegment <byte> Marshal(IBonded bonded) { var output = new OutputBuffer(4096); var writer = new CompactBinaryWriter <OutputBuffer>(output); writer.WriteVersion(); bonded.Serialize(writer); return(output.Data); }
internal static Frame MessageToFrame(ulong conversationId, string methodName, PayloadType type, IMessage payload, IBonded layerData, Logger logger) { var frame = new Frame(logger); { var headers = new EpoxyHeaders { conversation_id = conversationId, payload_type = type, method_name = methodName ?? string.Empty, // method_name is not nullable }; if (payload.IsError) { headers.error_code = payload.Error.Deserialize <Error>().error_code; } else { headers.error_code = (int)ErrorCode.OK; } const int initialHeaderBufferSize = 150; var outputBuffer = new OutputBuffer(initialHeaderBufferSize); var fastWriter = new FastBinaryWriter <OutputBuffer>(outputBuffer); Serialize.To(fastWriter, headers); frame.Add(new Framelet(FrameletType.EpoxyHeaders, outputBuffer.Data)); } if (layerData != null) { const int initialLayerDataBufferSize = 150; var outputBuffer = new OutputBuffer(initialLayerDataBufferSize); var compactWriter = new CompactBinaryWriter <OutputBuffer>(outputBuffer); // TODO: See TODO below about issues with IBonded Marshal.TO(...) compactWriter.WriteVersion(); layerData.Serialize(compactWriter); frame.Add(new Framelet(FrameletType.LayerData, outputBuffer.Data)); } { var userData = payload.IsError ? (IBonded)payload.Error : (IBonded)payload.RawPayload; const int initialPayloadBufferSize = 1024; var outputBuffer = new OutputBuffer(initialPayloadBufferSize); var compactWriter = new CompactBinaryWriter <OutputBuffer>(outputBuffer); // TODO: marshal dies on IBonded Marshal.To(compactWriter, request) // understand more deeply why and consider fixing compactWriter.WriteVersion(); userData.Serialize(compactWriter); frame.Add(new Framelet(FrameletType.PayloadData, outputBuffer.Data)); } return(frame); }
protected ArraySegment <byte> SerializeToBytes(IBonded value) { if (value == null) { throw new ArgumentNullException(nameof(value)); } this.Buffer.Position = 0; value.Serialize(this.Writer); return(this.Buffer.Data); }
internal static Frame MessageToFrame(ulong conversationId, string methodName, PayloadType type, IMessage message, IBonded layerData, Logger logger) { var frame = new Frame(logger); { var headers = new EpoxyHeaders { conversation_id = conversationId, payload_type = type, method_name = methodName ?? string.Empty, // method_name is not nullable }; if (message.IsError) { headers.error_code = message.Error.Deserialize <Error>().error_code; } else { headers.error_code = (int)ErrorCode.OK; } const int initialHeaderBufferSize = 150; var outputBuffer = new OutputBuffer(initialHeaderBufferSize); var fastWriter = new FastBinaryWriter <OutputBuffer>(outputBuffer); Serialize.To(fastWriter, headers); frame.Add(new Framelet(FrameletType.EpoxyHeaders, outputBuffer.Data)); } if (layerData != null) { const int initialLayerDataBufferSize = 150; var outputBuffer = new OutputBuffer(initialLayerDataBufferSize); var compactWriter = new CompactBinaryWriter <OutputBuffer>(outputBuffer); compactWriter.WriteVersion(); layerData.Serialize(compactWriter); frame.Add(new Framelet(FrameletType.LayerData, outputBuffer.Data)); } { var userData = message.IsError ? (IBonded)message.Error : (IBonded)message.RawPayload; const int initialPayloadBufferSize = 1024; var outputBuffer = new OutputBuffer(initialPayloadBufferSize); var compactWriter = new CompactBinaryWriter <OutputBuffer>(outputBuffer); compactWriter.WriteVersion(); userData.Serialize(compactWriter); frame.Add(new Framelet(FrameletType.PayloadData, outputBuffer.Data)); } return(frame); }
internal static Frame MessageToFrame( ulong conversationId, string serviceName, string methodName, EpoxyMessageType type, IMessage message, IBonded layerData, Logger logger) { var frame = new Frame(logger); { var headers = new EpoxyHeaders { conversation_id = conversationId, message_type = type, service_name = serviceName ?? string.Empty, // service_name is not nullable method_name = methodName ?? string.Empty // method_name is not nullable }; const int initialHeaderBufferSize = 150; var outputBuffer = new OutputBuffer(initialHeaderBufferSize); var fastWriter = new FastBinaryWriter <OutputBuffer>(outputBuffer); Serialize.To(fastWriter, headers); frame.Add(new Framelet(FrameletType.EpoxyHeaders, outputBuffer.Data)); } if (layerData != null) { const int initialLayerDataBufferSize = 150; var outputBuffer = new OutputBuffer(initialLayerDataBufferSize); var compactWriter = new CompactBinaryWriter <OutputBuffer>(outputBuffer); compactWriter.WriteVersion(); layerData.Serialize(compactWriter); frame.Add(new Framelet(FrameletType.LayerData, outputBuffer.Data)); } { FrameletType frameletType = message.IsError ? FrameletType.ErrorData : FrameletType.PayloadData; IBonded userData = message.IsError ? message.Error : message.RawPayload; const int initialMessageBufferSize = 1024; var outputBuffer = new OutputBuffer(initialMessageBufferSize); var compactWriter = new CompactBinaryWriter <OutputBuffer>(outputBuffer); compactWriter.WriteVersion(); userData.Serialize(compactWriter); frame.Add(new Framelet(frameletType, outputBuffer.Data)); } return(frame); }
public void Serialize <W>(W writer) { bonded.Serialize(writer); }
/// <summary> /// Serialize IBonded to protocol writer of type W /// </summary> /// <typeparam name="W">Protocol writer</typeparam> /// <param name="writer">Writer instance</param> /// <param name="bonded">IBonded instance</param> public static void To <W>(W writer, IBonded bonded) { bonded.Serialize(writer); }
public void Serialize <W>(W writer) { _instance.Serialize <W>(writer); }