Пример #1
0
        private IDnsQuestion GetDnsQuestion(TransportMessage message)
        {
            if (message.Content != null && !message.IsDnsResultMessage())
            {
                return(null);
            }

            var transportMessage = message.GetContent <DnsTransportMessage>();

            return(transportMessage.DnsQuestion);
        }
Пример #2
0
        private IPAddress GetIpAddr(TransportMessage message)
        {
            if (message.Content != null && !message.IsDnsResultMessage())
            {
                return(null);
            }

            var transportMessage = message.GetContent <DnsTransportMessage>();

            return(transportMessage.Address);
        }
Пример #3
0
        /// <summary>
        /// 执行。
        /// </summary>
        /// <param name="sender">消息发送者。</param>
        /// <param name="message">调用消息。</param>
        public async Task ExecuteAsync(IMessageSender sender, TransportMessage message)
        {
            if (_logger.IsEnabled(LogLevel.Trace))
            {
                _logger.LogTrace("服务提供者接收到消息。");
            }

            if (!message.IsDnsResultMessage())
            {
                return;
            }
            DnsTransportMessage dnsTransportMessage;

            try
            {
                dnsTransportMessage = message.GetContent <DnsTransportMessage>();
            }
            catch (Exception exception)
            {
                _logger.LogError(exception, "将接收到的消息反序列化成 TransportMessage<DnsTransportMessage> 时发送了错误。");
                return;
            }

            var entry = _dnsServiceEntryProvider.GetEntry();

            if (entry == null)
            {
                if (_logger.IsEnabled(LogLevel.Error))
                {
                    _logger.LogError("未实现DnsBehavior实例。");
                }
                return;
            }

            await LocalExecuteAsync(entry, dnsTransportMessage);
            await SendRemoteInvokeResult(sender, dnsTransportMessage);
        }