public void Build(ReplyReceiverSchema schema)
        {
            Contract.Requires(schema != null);

            MessagePipelineBuilder.Build()
                .With(messageReceiver)
                .ToProcessor(new BodyMessageFilter(schema.Address))
                .ToProcessor(new MessageHookRunner<MessagePayload>(schema.Hooks))
                .ToConverter(new MessagePayloadUnpackager(serialiser))
                .ToEndPoint(new DirectReplyMessageHandlerRouter(mainThreadMarshaller, router));
        }
        public DirectRequestReplySenderConfiguration(
            MessagingConfiguration messagingConfiguration, 
            EndpointAddress address, 
            EndpointAddress toAddress) 
            : base(messagingConfiguration) 
        {
            Contract.Requires(messagingConfiguration != null);
            Contract.Requires(address != null);
            Contract.Requires(toAddress != null);

            sendSchema = new RequestSenderSchema
            {
                FromAddress = address,
                ToAddress = toAddress,
                FilterStrategy = new PassThroughMessageFilterStategy()
            };

            receiveSchema = new ReplyReceiverSchema
            {
                Address = address
            };
        }