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()); }
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 }); }