示例#1
0
        IRoutingKey[] IAddressFinder.Find(AddressFinderSource source, IAddressFinderDiagnostics diagnostics)
        {
            AddressFinderHelper.ThrowIfNull(source, diagnostics);
            List <IRoutingKey> list = new List <IRoutingKey>();

            if (!source.Headers.IsNullOrEmpty())
            {
                IRoutingKey routingKey = RoutingHintAddressFinder.FindByTargetServer(source.Headers[WellKnownHeader.XTargetServer], diagnostics);
                if (routingKey != null)
                {
                    list.Add(routingKey);
                }
                else
                {
                    IRoutingKey[] collection = RoutingHintAddressFinder.FindByAnchorMailbox(source.Headers[WellKnownHeader.AnchorMailbox], diagnostics);
                    if (!collection.IsNullOrEmpty())
                    {
                        list.AddRange(collection);
                    }
                }
            }
            if (list.Count == 0)
            {
                return(AddressFinderHelper.EmptyRoutingKeyArray);
            }
            return(list.ToArray());
        }