private Task <StreamSubscription> SubscribeToStreamAsync(string streamName, StreamRevision start, Func <StreamSubscription, ResolvedEvent, CancellationToken, Task> eventAppeared, EventStoreClientOperationOptions operationOptions, bool resolveLinkTos = false, Action <StreamSubscription, SubscriptionDroppedReason, Exception> subscriptionDropped = default, UserCredentials userCredentials = default, CancellationToken cancellationToken = default) { operationOptions.TimeoutAfter = DeadLine.None; return(StreamSubscription.Confirm(ReadInternal(new ReadReq { Options = new ReadReq.Types.Options { ReadDirection = ReadReq.Types.Options.Types.ReadDirection.Forwards, ResolveLinks = resolveLinkTos, Stream = start == StreamRevision.End ? new ReadReq.Types.Options.Types.StreamOptions { End = new Empty(), StreamName = streamName } : new ReadReq.Types.Options.Types.StreamOptions { Revision = start, StreamName = streamName }, Subscription = new ReadReq.Types.Options.Types.SubscriptionOptions() } }, operationOptions, userCredentials, cancellationToken), eventAppeared, subscriptionDropped, _log, cancellationToken: cancellationToken)); }
private Task <StreamSubscription> SubscribeToAllAsync(Position start, Func <StreamSubscription, ResolvedEvent, CancellationToken, Task> eventAppeared, EventStoreClientOperationOptions operationOptions, bool resolveLinkTos = false, Action <StreamSubscription, SubscriptionDroppedReason, Exception> subscriptionDropped = default, SubscriptionFilterOptions filterOptions = null, UserCredentials userCredentials = default, CancellationToken cancellationToken = default) { operationOptions.TimeoutAfter = DeadLine.None; return(StreamSubscription.Confirm(ReadInternal(new ReadReq { Options = new ReadReq.Types.Options { ReadDirection = ReadReq.Types.Options.Types.ReadDirection.Forwards, ResolveLinks = resolveLinkTos, All = ReadReq.Types.Options.Types.AllOptions.FromPosition(start), Subscription = new ReadReq.Types.Options.Types.SubscriptionOptions(), Filter = GetFilterOptions(filterOptions) } }, operationOptions, userCredentials, cancellationToken), eventAppeared, subscriptionDropped, _log, filterOptions?.CheckpointReached, cancellationToken)); }