Ejemplo n.º 1
0
 public SuccessfulMailboxRoutingEntry(IRoutingKey key, DatabaseGuidRoutingDestination destination, long timestamp) : base(key, timestamp)
 {
     if (destination == null)
     {
         throw new ArgumentNullException("destination");
     }
     this.destination = destination;
 }
Ejemplo n.º 2
0
        public static IRoutingKey CreateRoutingKey(this IRoutingDestination destination)
        {
            DatabaseGuidRoutingDestination databaseGuidRoutingDestination = destination as DatabaseGuidRoutingDestination;

            if (databaseGuidRoutingDestination != null)
            {
                return(new DatabaseGuidRoutingKey(databaseGuidRoutingDestination.DatabaseGuid, databaseGuidRoutingDestination.DomainName, databaseGuidRoutingDestination.ResourceForest));
            }
            return(null);
        }
Ejemplo n.º 3
0
 private bool ShouldSendRoutingEntryUpdate(IRoutingEntry originalRoutingEntry, IRoutingEntry updatedRoutingEntry)
 {
     if (!originalRoutingEntry.Destination.Equals(updatedRoutingEntry.Destination))
     {
         DatabaseGuidRoutingDestination databaseGuidRoutingDestination  = originalRoutingEntry.Destination as DatabaseGuidRoutingDestination;
         DatabaseGuidRoutingDestination databaseGuidRoutingDestination2 = updatedRoutingEntry.Destination as DatabaseGuidRoutingDestination;
         return(!(databaseGuidRoutingDestination2 != null) || !(databaseGuidRoutingDestination != null) || !(databaseGuidRoutingDestination.DatabaseGuid == databaseGuidRoutingDestination2.DatabaseGuid) || !(databaseGuidRoutingDestination.DomainName == databaseGuidRoutingDestination2.DomainName) || !string.IsNullOrEmpty(databaseGuidRoutingDestination.ResourceForest) || !HttpProxyGlobals.LocalMachineForest.Member.Equals(databaseGuidRoutingDestination2.ResourceForest, StringComparison.OrdinalIgnoreCase));
     }
     return(false);
 }
        public override IRoutingEntry GetRoutingEntry()
        {
            IRoutingKey routingKey = this.GetRoutingKey();
            DatabaseGuidRoutingDestination databaseGuidRoutingDestination = this.GetRoutingDestination() as DatabaseGuidRoutingDestination;

            if (routingKey != null && databaseGuidRoutingDestination != null)
            {
                return(new SuccessfulMailboxRoutingEntry(routingKey, databaseGuidRoutingDestination, 0L));
            }
            return(base.GetRoutingEntry());
        }
Ejemplo n.º 5
0
        private static IRoutingDestination DeserializeRoutingDestination(string type, string value)
        {
            int num = value.IndexOf('+');

            string[] properties = Array <string> .Empty;
            if (num != -1)
            {
                properties = value.Substring(num + 1).Split(new char[]
                {
                    '+'
                });
                value = value.Substring(0, num);
            }
            if (type != null)
            {
                DatabaseGuidRoutingDestination result3;
                if (!(type == "DatabaseGuid"))
                {
                    ErrorRoutingDestination result2;
                    if (!(type == "Error"))
                    {
                        if (type == "Server")
                        {
                            ServerRoutingDestination result;
                            if (ServerRoutingDestination.TryParse(value, properties, out result))
                            {
                                return(result);
                            }
                        }
                    }
                    else if (ErrorRoutingDestination.TryParse(value, properties, out result2))
                    {
                        return(result2);
                    }
                }
                else if (DatabaseGuidRoutingDestination.TryParse(value, properties, out result3))
                {
                    return(result3);
                }
            }
            return(new UnknownRoutingDestination(type, value, properties));
        }
Ejemplo n.º 6
0
        public static bool AddEntry(this ISharedCacheClient cacheClient, IRoutingEntry entry)
        {
            SuccessfulMailboxRoutingEntry firstRoutingEntry = entry as SuccessfulMailboxRoutingEntry;

            if (firstRoutingEntry != null)
            {
                DatabaseGuidRoutingDestination databaseGuidRoutingDestination = entry.Destination as DatabaseGuidRoutingDestination;
                if (databaseGuidRoutingDestination != null)
                {
                    string sharedCacheKeyFromRoutingKey             = cacheClient.GetSharedCacheKeyFromRoutingKey(entry.Key);
                    AnchorMailboxCacheEntry anchorMailboxCacheEntry = new AnchorMailboxCacheEntry();
                    anchorMailboxCacheEntry.Database   = new ADObjectId(databaseGuidRoutingDestination.DatabaseGuid, databaseGuidRoutingDestination.ResourceForest);
                    anchorMailboxCacheEntry.DomainName = databaseGuidRoutingDestination.DomainName;
                    DateTime utcNow = DateTime.UtcNow;
                    string   text;
                    return(cacheClient.TryInsert(sharedCacheKeyFromRoutingKey, anchorMailboxCacheEntry.ToByteArray(), utcNow, out text));
                }
            }
            else
            {
                SuccessfulDatabaseGuidRoutingEntry successfulDatabaseGuidRoutingEntry = entry as SuccessfulDatabaseGuidRoutingEntry;
                if (successfulDatabaseGuidRoutingEntry != null)
                {
                    ServerRoutingDestination serverRoutingDestination = entry.Destination as ServerRoutingDestination;
                    if (serverRoutingDestination != null)
                    {
                        BackEndServer backEndServer = new BackEndServer(serverRoutingDestination.Fqdn, serverRoutingDestination.Version ?? 0);
                        string        resourceForest;
                        if (Utilities.TryExtractForestFqdnFromServerFqdn(backEndServer.Fqdn, out resourceForest))
                        {
                            MailboxServerCacheEntry value = new MailboxServerCacheEntry(backEndServer, resourceForest, DateTime.UtcNow, false);
                            DateTime utcNow2 = DateTime.UtcNow;
                            DatabaseGuidRoutingKey databaseGuidRoutingKey = successfulDatabaseGuidRoutingEntry.Key as DatabaseGuidRoutingKey;
                            string text2;
                            return(cacheClient.TryInsert(databaseGuidRoutingKey.DatabaseGuid.ToString(), value, utcNow2, out text2));
                        }
                    }
                }
            }
            return(false);
        }
Ejemplo n.º 7
0
        IRoutingEntry IRoutingLookup.GetRoutingEntry(IRoutingKey routingKey, IRoutingDiagnostics diagnostics)
        {
            if (routingKey == null)
            {
                throw new ArgumentNullException("routingKey");
            }
            if (diagnostics == null)
            {
                throw new ArgumentNullException("diagnostics");
            }
            if (routingKey.RoutingItemType != this.validItemType)
            {
                string message = string.Format("Routing key type {0} is not supported in {1}", RoutingEntryHeaderSerializer.RoutingTypeToString(routingKey.RoutingItemType), base.GetType());
                throw new ArgumentException(message, "routingKey");
            }
            string sharedCacheKeyFromRoutingKey = this.sharedCache.GetSharedCacheKeyFromRoutingKey(routingKey);

            try
            {
                byte[] bytes;
                if (this.sharedCache.TryGet(sharedCacheKeyFromRoutingKey, out bytes, diagnostics))
                {
                    AnchorMailboxCacheEntry anchorMailboxCacheEntry = new AnchorMailboxCacheEntry();
                    anchorMailboxCacheEntry.FromByteArray(bytes);
                    if (anchorMailboxCacheEntry.Database != null)
                    {
                        DatabaseGuidRoutingDestination destination = new DatabaseGuidRoutingDestination(anchorMailboxCacheEntry.Database.ObjectGuid, anchorMailboxCacheEntry.DomainName, anchorMailboxCacheEntry.Database.PartitionFQDN);
                        return(new SuccessfulMailboxRoutingEntry(routingKey, destination, DateTime.Now.ToFileTimeUtc()));
                    }
                }
            }
            catch (SharedCacheException ex)
            {
                ErrorRoutingDestination destination2 = new ErrorRoutingDestination(ex.Message);
                return(new FailedMailboxRoutingEntry(routingKey, destination2, DateTime.UtcNow.ToFileTimeUtc()));
            }
            return(null);
        }