public SuccessfulServerRoutingEntry(ServerRoutingKey key, ServerRoutingDestination destination, long timestamp) : base(key, timestamp) { if (destination == null) { throw new ArgumentNullException("destination"); } this.destination = destination; }
public virtual ServerLocatorReturn LocateServer(IRoutingKey[] keys, IRouteSelectorDiagnostics diagnostics) { IRoutingKey successKey = null; IRoutingEntry routingEntry = null; IList <IRoutingEntry> routingEntries = null; string value; if (keys != null) { foreach (IRoutingKey routingKey in keys) { if (routingKey != null) { if (this.ResolveRoute(routingKey, diagnostics, out routingEntry, out routingEntries)) { successKey = routingKey; break; } } else { value = "[ServerLocator::LocateServer]: null key value in collection."; diagnostics.AddErrorInfo(value); } } } else { value = "[ServerLocator::LocateServer]: null keys collection."; diagnostics.AddErrorInfo(value); } SuccessfulDatabaseGuidRoutingEntry successfulDatabaseGuidRoutingEntry = routingEntry as SuccessfulDatabaseGuidRoutingEntry; if (successfulDatabaseGuidRoutingEntry != null) { ServerRoutingDestination serverRoutingDestination = successfulDatabaseGuidRoutingEntry.Destination as ServerRoutingDestination; return(new ServerLocatorReturn(serverRoutingDestination.Fqdn, serverRoutingDestination.Version, successKey, routingEntries)); } SuccessfulServerRoutingEntry successfulServerRoutingEntry = routingEntry as SuccessfulServerRoutingEntry; if (successfulServerRoutingEntry != null) { ServerRoutingDestination serverRoutingDestination2 = successfulServerRoutingEntry.Destination as ServerRoutingDestination; return(new ServerLocatorReturn(serverRoutingDestination2.Fqdn, serverRoutingDestination2.Version, successKey, routingEntries)); } value = string.Format("[ServerLocator::LocateServer]: RoutingEntry returned was of an unexpected type: {0}", (routingEntry != null) ? routingEntry.GetType() : null); diagnostics.AddErrorInfo(value); return(null); }
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)); }
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); }