// public methods /// <summary> /// Reads the message. /// </summary> /// <returns>A message.</returns> public CompressedMessage ReadMessage() { var reader = CreateJsonReader(); var context = BsonDeserializationContext.CreateRoot(reader); var messageDocument = BsonDocumentSerializer.Instance.Deserialize(context); var opcode = (Opcode)messageDocument["opcode"].ToInt32(); if (opcode != Opcode.Compressed) { throw new FormatException($"Command message invalid opcode: \"{opcode}\"."); } var compressorId = (CompressorType)messageDocument["compressorId"].ToInt32(); var compressedMessage = messageDocument["compressedMessage"].AsString; using (var originalTextReader = new StringReader(compressedMessage)) { var jsonEncoderFactory = new JsonMessageEncoderFactory(originalTextReader, _encoderSettings); var originalEncoder = _originalEncoderSelector.GetEncoder(jsonEncoderFactory); var originalMessage = originalEncoder.ReadMessage(); return(new CompressedMessage(originalMessage, null, compressorId)); } }
public void GetUpdateMessageEncoder_should_return_a_UpdateMessageJsonEncoder() { using (var textWriter = new StringWriter()) { var encoderFactory = new JsonMessageEncoderFactory(null, textWriter, __messageEncoderSettings); var encoder = encoderFactory.GetUpdateMessageEncoder(); encoder.Should().BeOfType <UpdateMessageJsonEncoder>(); } }
public void GetReplyMessageEncoder_should_return_a_ReplyMessageJsonEncoder() { using (var textReader = new StringReader("")) { var encoderFactory = new JsonMessageEncoderFactory(textReader, null, __messageEncoderSettings); var encoder = encoderFactory.GetReplyMessageEncoder <BsonDocument>(BsonDocumentSerializer.Instance); encoder.Should().BeOfType <ReplyMessageJsonEncoder <BsonDocument> >(); } }
public void GetInsertMessageEncoder_should_return_a_InsertMessageJsonEncoder() { using (var textWriter = new StringWriter()) { var encoderFactory = new JsonMessageEncoderFactory(null, textWriter, __messageEncoderSettings); var encoder = encoderFactory.GetInsertMessageEncoder <BsonDocument>(BsonDocumentSerializer.Instance); encoder.Should().BeOfType <InsertMessageJsonEncoder <BsonDocument> >(); } }
public void GetUpdateMessageEncoder_should_return_a_UpdateMessageJsonEncoder() { using (var stringWriter = new StringWriter()) using (var jsonWriter = new JsonWriter(stringWriter)) { var encoderFactory = new JsonMessageEncoderFactory(null, jsonWriter); var encoder = encoderFactory.GetUpdateMessageEncoder(); encoder.Should().BeOfType <UpdateMessageJsonEncoder>(); } }
public void GetReplyMessageEncoder_should_return_a_ReplyMessageJsonEncoder() { using (var stringWriter = new StringWriter()) using (var jsonWriter = new JsonWriter(stringWriter)) { var encoderFactory = new JsonMessageEncoderFactory(null, jsonWriter); var encoder = encoderFactory.GetReplyMessageEncoder <BsonDocument>(BsonDocumentSerializer.Instance); encoder.Should().BeOfType <ReplyMessageJsonEncoder <BsonDocument> >(); } }
/// <summary> /// Writes the message. /// </summary> /// <param name="message">The message.</param> public void WriteMessage(CompressedMessage message) { Ensure.IsNotNull(message, nameof(message)); var writer = CreateJsonWriter(); writer.WriteStartDocument(); writer.WriteInt32("opcode", (int)Opcode.Compressed); writer.WriteInt32("compressorId", (int)message.CompressorType); using (var originalWriter = new StringWriter()) { var jsonEncoderFactory = new JsonMessageEncoderFactory(originalWriter, _encoderSettings); var originalEncoder = _originalEncoderSelector.GetEncoder(jsonEncoderFactory); originalEncoder.WriteMessage(message.OriginalMessage); writer.WriteString("compressedMessage", originalWriter.ToString()); } writer.WriteEndDocument(); }