private void OnMessageFrame(MessageFrame frame) { if (_state != ServerState.Ready) { throw new Exception("Handshake not completed, should not have received a message frame."); } if (_payloadSerializer != null) { if (_payloadDotNetType != null) { frame.Payload = frame.PayloadStream == null ? _payloadSerializer.Deserialize(_payloadDotNetType, frame.PayloadBuffer.Array, frame.PayloadBuffer.Offset, frame.PayloadBuffer.Count) : _payloadSerializer.Deserialize(_payloadDotNetType, frame.PayloadStream); } else { frame.Payload = frame.PayloadStream == null ? _payloadSerializer.Deserialize(frame.PayloadBuffer.Array, frame.PayloadBuffer.Offset, frame.PayloadBuffer.Count) : _payloadSerializer.Deserialize(frame.PayloadStream); } } if (_ackSender == null || _ackSender.AddFrame(frame)) { FrameReceived(this, frame); } }
public void PostDeserialize(IPayloadSerializer serializer, Stream stream) { lock (Event) { if (Arguments == null || Arguments.Length == 0) { Types = null; Objects = null; } else { Types = new Type[Arguments.Length]; Objects = new object[Arguments.Length]; for (var i = 0; i < Arguments.Length; i++) { var arg = Arguments[i]; using (var mm = new MemoryStream(arg)) { Objects[i] = serializer.Deserialize(serializer.SupportedContentType, mm, out Types[i]); } } } Arguments = null; } }
T BuildResponse(SocketConnection sc) { byte[] responseBuffer = sc.GetDataBuffer(); // Timeout occured if (responseBuffer.Length == 0) { throw new ClientException("Timeout"); } // Create memorystream for deserialization purposes: // - skip the first 4 bytes (length (l) + control byte (cb)) // - read up to boundaryMarker minus 7 (= l + cb + crlf) using (var ms = new MemoryStream(responseBuffer, 1, responseBuffer.Length - 1)) using (var reader = new StreamReader(ms)) { var controlChar = responseBuffer[0]; switch (controlChar) { case WireFormat.SuccessControlChar: return(serializer.Deserialize(ms)); case WireFormat.ErrorControlChar: throw new ClientException(reader.ReadToEnd()); default: throw new ClientException("Unknown control character detected"); } } }
public static T Deserialize <T>(this byte[] data, IPayloadSerializer serializer) { using (var ms = new MemoryStream(data)) { return((T)serializer.Deserialize(serializer.SupportedContentType, ms, out var type)); } }
T ITelemetrySerializer <T> .Deserialize(byte[] message) { T restored = (T)_serializer.Deserialize(message); // Here you can set the defaults if null is undesirable for nullable fields return(restored); }
private void OnMessageFrame(MessageFrame frame) { if (_state != ServerState.Ready) { throw new Exception("Handshake not completed, should not have received a message frame."); } // using acks and the specified frame have already been recieved. if (_ackSender != null && _ackSender.ShouldReAck(frame)) { _ackSender.AckFrame(frame); return; } if (_payloadSerializer != null) { if (_payloadDotNetType != null) { frame.Payload = frame.PayloadStream == null ? _payloadSerializer.Deserialize(_payloadDotNetType, frame.PayloadBuffer.Array, frame.PayloadBuffer.Offset, frame.PayloadBuffer.Count) : _payloadSerializer.Deserialize(_payloadDotNetType, frame.PayloadStream); } else { frame.Payload = frame.PayloadStream == null ? _payloadSerializer.Deserialize(frame.PayloadBuffer.Array, frame.PayloadBuffer.Offset, frame.PayloadBuffer.Count) : _payloadSerializer.Deserialize(frame.PayloadStream); } } FrameReceived(this, frame); //Do it after the event trigger, so that any exception //doesn't ack the frame (as the client did not process it correctly). if (_ackSender != null) { _ackSender.AckFrame(frame); } }
public async Task <IEventMessage> ReadAsync( CancellationToken cancellationToken) { ChannelMessage message = await _channel .ReadAsync(cancellationToken); var payload = _serializer.Deserialize(message.Message); return(new EventMessage(message.Channel, payload)); }
private void ConsumerLoop() { while (true) { lock (_lock) { if (_queue.Count == 0) { Monitor.Wait(_lock); } var serialized = _queue.Dequeue(); var dto = _serializer.Deserialize(serialized); Console.WriteLine("Deserialized data:"); Console.WriteLine("{0}", dto); } Thread.Sleep(5000); } }