Example #1
0
        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;
            }
        }
Example #2
0
 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);