RPCBase.Server.AmqpAdaptor.OnReceived C# (CSharp) Method

OnReceived() private method

private OnReceived ( object sender, RabbitMQ.Client.Events.BasicDeliverEventArgs ea ) : void
sender object
ea RabbitMQ.Client.Events.BasicDeliverEventArgs
return void
        private void OnReceived(object sender, BasicDeliverEventArgs ea)
        {
            var topic = ea.RoutingKey.Split('.');
            var sid = topic[1];
            var mode = MetaData.GetMode(topic[2]);//todo change string to char
            var toQuery = mode == Mode.Return ? delegates : implements;

            IMessageConsumer msgConsumer;
            
            if (toQuery.TryGetValue(sid, out msgConsumer))
            {
                //todo srcUuid dup one, and unpack at RPC layer
                msgConsumer.OnReceiveMessage(mode, ea.Body, 0, (buffer, dstUuid, rule) =>
                {
                    lock (mqChannel)
                    {
                        mqChannel.BasicPublish(rule.AmqpRule.GetReturnExchangeName(), rule.AmqpRule.GetReturnRoutingKey(dstUuid), null, buffer);
                        //mqChannel.BasicPublish(exchangeName, routingKey, null, buffer);
                    }
                });
            }
        }