protected PartitionSelector GetPartitionSelector() { if (this.ParameterSetName == "PartitionId") { return(PartitionSelector.PartitionIdOf(this.ServiceName, this.PartitionId)); } else { switch (this.ParameterSetName) { case "ServiceNameRandomPartition": return(PartitionSelector.RandomOf(this.ServiceName)); case "ServiceNamePartitionSingleton": return(PartitionSelector.SingletonOf(this.ServiceName)); case "ServiceNamePartitionNamed": return(PartitionSelector.PartitionKeyOf(this.ServiceName, this.PartitionKey)); case "ServiceNamePartitionUniformedInt": long partitionKeyLong; if (!long.TryParse(this.PartitionKey, out partitionKeyLong)) { throw new ArgumentException(StringResources.Error_InvalidPartitionKey); } return(PartitionSelector.PartitionKeyOf(this.ServiceName, partitionKeyLong)); default: throw new ArgumentException(StringResources.Error_CouldNotParsePartitionSelector); } } }
public static PartitionSelector GetExpectedPartitionSelector(PartitionCase partitionCase) { PartitionSelector result = null; switch (partitionCase) { case PartitionCase.PartitionId: { result = PartitionSelector.PartitionIdOf(ServiceName, PartitionID); break; } case PartitionCase.ServiceNameRandomPartition: { result = PartitionSelector.RandomOf(ServiceName); break; } case PartitionCase.ServiceNamePartitionSingleton: { result = PartitionSelector.SingletonOf(ServiceName); break; } case PartitionCase.ServiceNamePartitionNamed: { result = PartitionSelector.PartitionKeyOf(ServiceName, PartitionKey); break; } case PartitionCase.ServiceNamePartitionUniformedInt: { result = PartitionSelector.PartitionKeyOf(ServiceName, PartitionKeyLong); break; } } return(result); }
internal static ReplicaSelector GetReplicaSelector(string partitionSetName, Guid partitionId, Uri serviceName, string partitionKey, long?replicaOrInstanceId) { ReplicaSelector replicaSelector = null; PartitionSelector partitionSelector = null; if (partitionSetName.Contains("PartitionId")) { partitionSelector = PartitionSelector.PartitionIdOf(serviceName, partitionId); } else { if (partitionSetName.Contains("PartitionSingleton")) { partitionSelector = PartitionSelector.SingletonOf(serviceName); } else if (partitionSetName.Contains("PartitionNamed")) { partitionSelector = PartitionSelector.PartitionKeyOf(serviceName, partitionKey); } else if (partitionSetName.Contains("PartitionUniformedInt")) { long partitionKeyLong; if (!long.TryParse(partitionKey, out partitionKeyLong)) { throw new ArgumentException(StringResources.Error_InvalidPartitionKey); } partitionSelector = PartitionSelector.PartitionKeyOf(serviceName, partitionKeyLong); } else if (!partitionSetName.Contains("Partition")) { partitionSelector = PartitionSelector.RandomOf(serviceName); } } if (partitionSelector == null) { throw new ArgumentException(StringResources.Error_CouldNotParsePartitionSelector); } if (partitionSetName.Contains("ReplicaPrimary")) { replicaSelector = ReplicaSelector.PrimaryOf(partitionSelector); } else if (partitionSetName.Contains("ReplicaRandomSecondary")) { replicaSelector = ReplicaSelector.RandomSecondaryOf(partitionSelector); } else if (partitionSetName.Contains("ReplicaId")) { replicaSelector = ReplicaSelector.ReplicaIdOf(partitionSelector, replicaOrInstanceId ?? 0); } else if (!partitionSetName.Contains("Replica")) { replicaSelector = ReplicaSelector.RandomOf(partitionSelector); } if (replicaSelector == null) { throw new ArgumentException(StringResources.Error_CouldNotParseReplicaSelector); } return(replicaSelector); }