private void WriteMessageCore(HubMessage message, Stream stream) { using (var writer = new JsonTextWriter(new StreamWriter(stream))) { switch (message) { case InvocationMessage m: WriteInvocationMessage(m, writer); break; case StreamInvocationMessage m: WriteStreamInvocationMessage(m, writer); break; case StreamItemMessage m: WriteStreamItemMessage(m, writer); break; case CompletionMessage m: WriteCompletionMessage(m, writer); break; case CancelInvocationMessage m: WriteCancelInvocationMessage(m, writer); break; case PingMessage m: WritePingMessage(m, writer); break; default: throw new InvalidOperationException($"Unsupported message type: {message.GetType().FullName}"); } } }
private void WriteMessageCore(HubMessage message, Stream output) { // PackerCompatibilityOptions.None prevents from serializing byte[] as strings // and allows extended objects var packer = Packer.Create(output, PackerCompatibilityOptions.None); switch (message) { case InvocationMessage invocationMessage: WriteInvocationMessage(invocationMessage, packer); break; case StreamItemMessage streamItemMessage: WriteStreamingItemMessage(streamItemMessage, packer); break; case CompletionMessage completionMessage: WriteCompletionMessage(completionMessage, packer); break; case CancelInvocationMessage cancelInvocationMessage: WriteCancelInvocationMessage(cancelInvocationMessage, packer); break; default: throw new FormatException($"Unexpected message type: {message.GetType().Name}"); } }
private void WriteMessageCore(HubMessage message, Stream stream) { using (var writer = new JsonTextWriter(new StreamWriter(stream, _utf8NoBom, 1024, leaveOpen: true))) { writer.WriteStartObject(); switch (message) { case InvocationMessage m: WriteMessageType(writer, HubProtocolConstants.InvocationMessageType); WriteHeaders(writer, m); WriteInvocationMessage(m, writer); break; case StreamInvocationMessage m: WriteMessageType(writer, HubProtocolConstants.StreamInvocationMessageType); WriteHeaders(writer, m); WriteStreamInvocationMessage(m, writer); break; case StreamItemMessage m: WriteMessageType(writer, HubProtocolConstants.StreamItemMessageType); WriteHeaders(writer, m); WriteStreamItemMessage(m, writer); break; case CompletionMessage m: WriteMessageType(writer, HubProtocolConstants.CompletionMessageType); WriteHeaders(writer, m); WriteCompletionMessage(m, writer); break; case CancelInvocationMessage m: WriteMessageType(writer, HubProtocolConstants.CancelInvocationMessageType); WriteHeaders(writer, m); WriteCancelInvocationMessage(m, writer); break; case PingMessage _: WriteMessageType(writer, HubProtocolConstants.PingMessageType); break; case CloseMessage m: WriteMessageType(writer, HubProtocolConstants.CloseMessageType); WriteCloseMessage(m, writer); break; default: throw new InvalidOperationException($"Unsupported message type: {message.GetType().FullName}"); } writer.WriteEndObject(); } }
private void WriteMessageCore(HubMessage message, Stream output) { var packer = Packer.Create(output); switch (message) { case InvocationMessage invocationMessage: WriteInvocationMessage(invocationMessage, packer, output); break; case StreamItemMessage streamItemMessage: WriteStreamingItemMessage(streamItemMessage, packer, output); break; case CompletionMessage completionMessage: WriteCompletionMessage(completionMessage, packer, output); break; default: throw new FormatException($"Unexpected message type: {message.GetType().Name}"); } }
private void WriteMessageCore(HubMessage message, IBufferWriter <byte> stream) { var textWriter = Utf8BufferTextWriter.Get(stream); try { using (var writer = JsonUtils.CreateJsonTextWriter(textWriter)) { writer.WriteStartObject(); switch (message) { case InvocationMessage m: WriteMessageType(writer, HubProtocolConstants.InvocationMessageType); WriteHeaders(writer, m); WriteInvocationMessage(m, writer); break; case StreamInvocationMessage m: WriteMessageType(writer, HubProtocolConstants.StreamInvocationMessageType); WriteHeaders(writer, m); WriteStreamInvocationMessage(m, writer); break; case StreamItemMessage m: WriteMessageType(writer, HubProtocolConstants.StreamItemMessageType); WriteHeaders(writer, m); WriteStreamItemMessage(m, writer); break; case CompletionMessage m: WriteMessageType(writer, HubProtocolConstants.CompletionMessageType); WriteHeaders(writer, m); WriteCompletionMessage(m, writer); break; case CancelInvocationMessage m: WriteMessageType(writer, HubProtocolConstants.CancelInvocationMessageType); WriteHeaders(writer, m); WriteCancelInvocationMessage(m, writer); break; case PingMessage _: WriteMessageType(writer, HubProtocolConstants.PingMessageType); break; case CloseMessage m: WriteMessageType(writer, HubProtocolConstants.CloseMessageType); WriteCloseMessage(m, writer); break; default: throw new InvalidOperationException($"Unsupported message type: {message.GetType().FullName}"); } writer.WriteEndObject(); writer.Flush(); } } finally { Utf8BufferTextWriter.Return(textWriter); } }