public StreamSegmentReaderSettings( [NotNull] string streamName, [NotNull] IHerculesStreamClient <T> streamClient, [NotNull] StreamCoordinates start, [NotNull] StreamCoordinates end) { StreamName = streamName; StreamClient = streamClient; Start = start.ToDictionary(); End = end.ToDictionary(); }
public StreamConsumerSettings( [NotNull] string streamName, [NotNull] IHerculesStreamClient <T> streamClient, [NotNull] IStreamEventsHandler <T> eventsHandler, [NotNull] IStreamCoordinatesStorage coordinatesStorage, [NotNull] Func <StreamShardingSettings> shardingSettingsProvider) { StreamName = streamName ?? throw new ArgumentNullException(nameof(streamName)); StreamClient = streamClient ?? throw new ArgumentNullException(nameof(streamClient)); EventsHandler = eventsHandler ?? throw new ArgumentNullException(nameof(eventsHandler)); CoordinatesStorage = coordinatesStorage ?? throw new ArgumentNullException(nameof(coordinatesStorage)); ShardingSettingsProvider = shardingSettingsProvider ?? throw new ArgumentNullException(nameof(shardingSettingsProvider)); }
public static void WaitForAnyRecord(this IHerculesStreamClient client, string stream) { var readQuery = new ReadStreamQuery(stream) { Limit = 1, Coordinates = new StreamCoordinates(new StreamPosition[0]), ClientShard = 0, ClientShardCount = 1 }; new Action(() => client.Read(readQuery, 20.Seconds()).Payload.Events.Should().NotBeEmpty()) .ShouldPassIn(20.Seconds()); }
public StreamConsumerSettings( [NotNull] string streamName, [NotNull] IHerculesStreamClient streamClient, [NotNull] IStreamEventsHandler eventsHandler, [NotNull] IStreamCoordinatesStorage coordinatesStorage, [NotNull] Func <StreamShardingSettings> shardingSettingsProvider) : base( streamName, streamClient.ToGenericClient(), eventsHandler.ToGenericHandler(), coordinatesStorage, shardingSettingsProvider) { }
public StreamTransformerSettings( [NotNull] string sourceStreamName, [NotNull] string targetStreamName, [NotNull] IHerculesStreamClient streamClient, [NotNull] IHerculesGateClient gateClient, [NotNull] IStreamCoordinatesStorage coordinatesStorage, [NotNull] Func <StreamShardingSettings> shardingSettingsProvider) { SourceStreamName = sourceStreamName ?? throw new ArgumentNullException(nameof(sourceStreamName)); TargetStreamName = targetStreamName ?? throw new ArgumentNullException(nameof(targetStreamName)); StreamClient = streamClient ?? throw new ArgumentNullException(nameof(streamClient)); GateClient = gateClient ?? throw new ArgumentNullException(nameof(gateClient)); CoordinatesStorage = coordinatesStorage ?? throw new ArgumentNullException(nameof(coordinatesStorage)); ShardingSettingsProvider = shardingSettingsProvider ?? throw new ArgumentNullException(nameof(shardingSettingsProvider)); }
public static List <HerculesEvent>[] ReadEvents( this IHerculesStreamClient client, string stream, int count, int limit, int clientShards, StreamCoordinates coordinates = null) { var timeout = 30.Seconds(); var stopwatch = Stopwatch.StartNew(); var eventsRead = 0; var clientShardTasks = Enumerable.Range(0, clientShards).Select(ReadSingleClientShard); var events = Task.WhenAll(clientShardTasks).GetAwaiter().GetResult(); events.Sum(x => x.Count).Should().Be(count); return(events); async Task <List <HerculesEvent> > ReadSingleClientShard(int clientShard) { var shardEvents = new List <HerculesEvent>(); var readQuery = new ReadStreamQuery(stream) { Limit = limit, Coordinates = coordinates ?? StreamCoordinates.Empty, ClientShard = clientShard, ClientShardCount = clientShards }; while (stopwatch.Elapsed < timeout && eventsRead < count) { var result = await client.ReadAsync(readQuery, timeout); result.IsSuccessful.Should().BeTrue(); var eventsFromResponse = result.Payload.Events; shardEvents.AddRange(eventsFromResponse); readQuery.Coordinates = result.Payload.Next; Interlocked.Add(ref eventsRead, eventsFromResponse.Count); await Task.Delay(100); } return(shardEvents); } }
public GenericAdapter(IHerculesStreamClient client) { this.client = client; }
public static IHerculesStreamClient <HerculesEvent> ToGenericClient([NotNull] this IHerculesStreamClient client) { return(new GenericAdapter(client)); }
public static SeekToEndStreamResult SeekToEnd( [NotNull] this IHerculesStreamClient client, [NotNull] SeekToEndStreamQuery query, TimeSpan timeout, CancellationToken cancellationToken = default) => client.SeekToEndAsync(query, timeout, cancellationToken).GetAwaiter().GetResult();
public static ReadStreamResult <T> Read <T>( [NotNull] this IHerculesStreamClient <T> client, [NotNull] ReadStreamQuery query, TimeSpan timeout, CancellationToken cancellationToken = default) => client.ReadAsync(query, timeout, cancellationToken).GetAwaiter().GetResult();
public static List <HerculesEvent> ReadEvents( this IHerculesStreamClient client, string stream, int count, StreamCoordinates coordinates, int limit = 10000) => client.ReadEvents(stream, count, limit, 1, coordinates).Single();
public StreamReaderSettings([NotNull] string streamName, [NotNull] IHerculesStreamClient streamClient) : base(streamName, streamClient.ToGenericClient()) { }
public StreamReaderSettings([NotNull] string streamName, [NotNull] IHerculesStreamClient<T> streamClient) { StreamName = streamName; StreamClient = streamClient; }