public override Message Receive(TimeSpan timeout) { try { #if VERBOSE DebugHelper.Start(); #endif BasicGetResult result = _messageReceiver.Receive(timeout); if (result == null) { return(null); } string contentType = result.BasicProperties.ContentType; if (!_encoders.ContainsKey(contentType)) { _messageReceiver.DropMessage(result.DeliveryTag); return(null); } MessageEncoder encoder = _encoders[contentType]; _messageReceiver.AcceptMessage(result.DeliveryTag); #if VERBOSE DebugHelper.Stop(" #### Message.Receive {{\n\tBytes={1}, \n\tTime={0}ms}}.", result.Body.Length); #endif #if VERBOSE DebugHelper.Start(); #endif Message message = encoder.ReadMessage(new MemoryStream(result.Body), int.MaxValue); message.Headers.To = LocalAddress.Uri; #if VERBOSE DebugHelper.Stop(" #### Message.DeSerialize {{\n\tAction={2}, \n\tBytes={1}, \n\tTime={0}ms}}.", result.Body.Length, message.Headers.Action); #endif return(message); } catch (EndOfStreamException) { Close(); return(null); } }