public static IEnumerable <T> Scan <T>( [NotNull] this IHerculesTimelineClient <T> client, [NotNull] ScanTimelineQuery query, TimeSpan perRequestTimeout, CancellationToken cancellationToken = default) { var nextCoordinates = TimelineCoordinates.Empty; while (true) { var readQuery = new ReadTimelineQuery(query.Name) { From = query.From, To = query.To, Limit = query.BatchSize, ClientShard = query.ClientShard, ClientShardCount = query.ClientShardCount, Coordinates = nextCoordinates }; var readPayload = client.Read(readQuery, perRequestTimeout, cancellationToken).Payload; foreach (var @event in readPayload.Events) { yield return(@event); } if (readPayload.Events.Count < query.BatchSize) { break; } nextCoordinates = readPayload.Next; } }
public static ReadTimelineResult <T> Read <T>( [NotNull] this IHerculesTimelineClient <T> client, [NotNull] ReadTimelineQuery query, TimeSpan timeout, CancellationToken cancellationToken = default) => client.ReadAsync(query, timeout, cancellationToken).GetAwaiter().GetResult();
public static IHerculesTimelineClient <HerculesEvent> ToGenericClient([NotNull] this IHerculesTimelineClient client) { return(new GenericAdapter(client)); }
public GenericAdapter(IHerculesTimelineClient client) { this.client = client; }
public static IEnumerable <HerculesEvent> Scan( [NotNull] this IHerculesTimelineClient client, [NotNull] ScanTimelineQuery query, TimeSpan perRequestTimeout, CancellationToken cancellationToken = default) => client.ToGenericClient().Scan(query, perRequestTimeout, cancellationToken);