public ServiceEndpointWithState Select(ServiceEndpointWithState[] availableServicesEndpointWith) { if (!availableServicesEndpointWith.Any()) return null; var count = availableServicesEndpointWith.Count(); return availableServicesEndpointWith[Rnd.Next(0, count)]; }
public ServiceEndpointWithState Select(ServiceEndpointWithState[] availableServicesEndpointWith) { var serviceIdentifier = availableServicesEndpointWith.First().ServiceIdentifier; var lastPosition = _lastPositions.ContainsKey(serviceIdentifier) ? _lastPositions[serviceIdentifier] : 0; var newPosition = (lastPosition + 1) % (availableServicesEndpointWith.Count()); if(_lastPositions.ContainsKey(serviceIdentifier)) _lastPositions[serviceIdentifier] = newPosition; else _lastPositions.Add(serviceIdentifier, newPosition); return availableServicesEndpointWith[newPosition]; }