示例#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());
        }
示例#2
0
        static AddressFinderFactory()
        {
            RoutingHintAddressFinder routingHintAddressFinder = new RoutingHintAddressFinder();
            LogonUserAddressFinder   logonUserAddressFinder   = new LogonUserAddressFinder();

            AddressFinderFactory.DefaultAddressFinder = new CompositeAddressFinder(new IAddressFinder[]
            {
                routingHintAddressFinder,
                logonUserAddressFinder
            });
            AddressFinderFactory.EasAddressFinder  = AddressFinderFactory.DefaultAddressFinder;
            AddressFinderFactory.MapiAddressFinder = new CompositeAddressFinder(new IAddressFinder[]
            {
                new MapiAddressFinder(),
                AddressFinderFactory.DefaultAddressFinder
            });
            AddressFinderFactory.RpcHttpAddressFinder = new CompositeAddressFinder(new IAddressFinder[]
            {
                new RpcHttpAddressFinder(),
                logonUserAddressFinder
            });
            AddressFinderFactory.EmptyAddressFinder = new CompositeAddressFinder(new IAddressFinder[0]);
            CompositeAddressFinder compositeAddressFinder = new CompositeAddressFinder(new IAddressFinder[]
            {
                new ExplicitLogonAddressFinder(),
                AddressFinderFactory.DefaultAddressFinder
            });

            AddressFinderFactory.EwsAddressFinder = new CompositeAddressFinder(new IAddressFinder[]
            {
                new EwsAddressFinder(),
                compositeAddressFinder
            });
            AddressFinderFactory.EwsODataAddressFinder = new CompositeAddressFinder(new IAddressFinder[]
            {
                new EwsODataAddressFinder(),
                AddressFinderFactory.EwsAddressFinder
            });
            AddressFinderFactory.EwsUserPhotoAddressFinder = new CompositeAddressFinder(new IAddressFinder[]
            {
                new EwsUserPhotoAddressFinder(),
                AddressFinderFactory.EwsAddressFinder
            });
        }