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); }
public GenericRoutingEntry(IRoutingKey key, IRoutingDestination destination, long timestamp) { if (key == null) { throw new ArgumentNullException("key"); } if (destination == null) { throw new ArgumentNullException("destination"); } this.key = key; this.destination = destination; this.timestamp = timestamp; }
public static IRoutingEntry Deserialize(string headerValue) { if (headerValue == null) { throw new ArgumentNullException("headerValue"); } RoutingEntryHeaderSerializer.RoutingEntryParts routingEntryParts; if (!RoutingEntryHeaderSerializer.TrySplitEntry(headerValue, out routingEntryParts)) { throw new ArgumentException("Value is incorrectly formatted", "headerValue"); } IRoutingKey key = RoutingEntryHeaderSerializer.DeserializeRoutingKey(routingEntryParts.KeyType, routingEntryParts.KeyValue); IRoutingDestination destination = RoutingEntryHeaderSerializer.DeserializeRoutingDestination(routingEntryParts.DestinationType, routingEntryParts.DestinationValue); return(RoutingEntryHeaderSerializer.AssembleRoutingEntry(key, destination, routingEntryParts.Timestamp)); }
private static IRoutingEntry AssembleRoutingEntry(IRoutingKey key, IRoutingDestination destination, long timestamp) { if (key is ServerRoutingKey) { if (destination is ServerRoutingDestination) { return(new SuccessfulServerRoutingEntry((ServerRoutingKey)key, (ServerRoutingDestination)destination, timestamp)); } if (destination is ErrorRoutingDestination) { return(new FailedServerRoutingEntry((ServerRoutingKey)key, (ErrorRoutingDestination)destination, timestamp)); } } if (key is DatabaseGuidRoutingKey) { if (destination is ServerRoutingDestination) { return(new SuccessfulDatabaseGuidRoutingEntry((DatabaseGuidRoutingKey)key, (ServerRoutingDestination)destination, timestamp)); } if (destination is ErrorRoutingDestination) { return(new FailedDatabaseGuidRoutingEntry((DatabaseGuidRoutingKey)key, (ErrorRoutingDestination)destination, timestamp)); } } else if (key is ArchiveSmtpRoutingKey || key is MailboxGuidRoutingKey || key is SmtpRoutingKey || key is ExternalDirectoryObjectIdRoutingKey || key is LiveIdMemberNameRoutingKey) { if (destination is DatabaseGuidRoutingDestination) { return(new SuccessfulMailboxRoutingEntry(key, (DatabaseGuidRoutingDestination)destination, timestamp)); } if (destination is ErrorRoutingDestination) { return(new FailedMailboxRoutingEntry(key, (ErrorRoutingDestination)destination, timestamp)); } } return(new GenericRoutingEntry(key, destination, timestamp)); }