Example #1
0
        private async Task ReceiveRequestMessage(SenderReceiver senderReceiver)
        {
            if (senderReceiver.Receiver == null)
            {
                throw new ArgumentException("senderReceiver.Receiver must not be null");
            }
            if (senderReceiver.Sender == null)
            {
                throw new ArgumentException("senderReceiver.Writer must not be null");
            }

            var messageFrame = await senderReceiver.Receiver.ReceiveAsync(_disposeCancellationToken).ConfigureAwait(false);

            ReceiveRequestMessage(senderReceiver).ConfigureAwait(false);

            var requestMessage = _messageSerialization.Deserialize(messageFrame.MessageTypeId,
                                                                   messageFrame.RawMessage);

            var worker = _responderWorkerFactory.GetWorkerFor(requestMessage);

            _scheduler.AddWorker(worker, requestMessage, senderReceiver);
        }