public ReadStreamForwards(IPublisher bus,
                                      string streamName,
                                      StreamRevision startRevision,
                                      ulong maxCount,
                                      bool resolveLinks,
                                      ClaimsPrincipal user,
                                      bool requiresLeader,
                                      DateTime deadline,
                                      ReadReq.Types.Options.Types.UUIDOption uuidOption,
                                      uint compatibility,
                                      CancellationToken cancellationToken)
            {
                _bus               = bus ?? throw new ArgumentNullException(nameof(bus));
                _streamName        = streamName ?? throw new ArgumentNullException(nameof(streamName));
                _maxCount          = maxCount;
                _resolveLinks      = resolveLinks;
                _user              = user;
                _requiresLeader    = requiresLeader;
                _deadline          = deadline;
                _uuidOption        = uuidOption;
                _compatibility     = compatibility;
                _cancellationToken = cancellationToken;
                _semaphore         = new SemaphoreSlim(1, 1);
                _channel           = Channel.CreateBounded <ReadResp>(BoundedChannelOptions);

                ReadPage(startRevision);
            }
示例#2
0
            public ReadAllBackwards(IPublisher bus,
                                    Position position,
                                    ulong maxCount,
                                    bool resolveLinks,
                                    ClaimsPrincipal user,
                                    bool requiresLeader,
                                    DateTime deadline,
                                    ReadReq.Types.Options.Types.UUIDOption uuidOption,
                                    CancellationToken cancellationToken)
            {
                if (bus == null)
                {
                    throw new ArgumentNullException(nameof(bus));
                }

                _bus               = bus;
                _maxCount          = maxCount;
                _resolveLinks      = resolveLinks;
                _user              = user;
                _requiresLeader    = requiresLeader;
                _deadline          = deadline;
                _uuidOption        = uuidOption;
                _cancellationToken = cancellationToken;
                _semaphore         = new SemaphoreSlim(1, 1);
                _channel           = Channel.CreateBounded <ReadResp>(BoundedChannelOptions);

                ReadPage(position);
            }
示例#3
0
            public AllSubscriptionFiltered(IPublisher bus,
                                           Position?startPosition,
                                           bool resolveLinks,
                                           IEventFilter eventFilter,
                                           ClaimsPrincipal user,
                                           bool requiresLeader,
                                           IReadIndex readIndex,
                                           uint?maxSearchWindow,
                                           uint checkpointIntervalMultiplier,
                                           ReadReq.Types.Options.Types.UUIDOption uuidOption,
                                           CancellationToken cancellationToken)
            {
                if (bus == null)
                {
                    throw new ArgumentNullException(nameof(bus));
                }

                if (eventFilter == null)
                {
                    throw new ArgumentNullException(nameof(eventFilter));
                }

                if (readIndex == null)
                {
                    throw new ArgumentNullException(nameof(readIndex));
                }

                if (checkpointIntervalMultiplier == 0)
                {
                    throw new ArgumentOutOfRangeException(nameof(checkpointIntervalMultiplier));
                }

                _subscriptionId      = Guid.NewGuid();
                _bus                 = bus;
                _resolveLinks        = resolveLinks;
                _eventFilter         = eventFilter;
                _user                = user;
                _requiresLeader      = requiresLeader;
                _readIndex           = readIndex;
                _maxSearchWindow     = maxSearchWindow ?? ReadBatchSize;
                _uuidOption          = uuidOption;
                _cancellationToken   = cancellationToken;
                _subscriptionStarted = 0;
                _channel             = Channel.CreateBounded <ReadResp>(BoundedChannelOptions);
                _checkpointInterval  = checkpointIntervalMultiplier * _maxSearchWindow;
                _semaphore           = new SemaphoreSlim(1, 1);

                SubscriptionId = _subscriptionId.ToString();

                _currentPosition = null;

                Subscribe(startPosition);
            }
示例#4
0
        private static ReadResp.Types.ReadEvent.Types.RecordedEvent ConvertToRecordedEvent(
            ReadReq.Types.Options.Types.UUIDOption uuidOption, EventRecord e, long?commitPosition,
            long?preparePosition)
        {
            if (e == null)
            {
                return(null);
            }
            var position = Position.FromInt64(commitPosition ?? -1, preparePosition ?? -1);

            return(new ReadResp.Types.ReadEvent.Types.RecordedEvent {
                Id = uuidOption.ContentCase switch {
                    ReadReq.Types.Options.Types.UUIDOption.ContentOneofCase.String => new UUID {
                        String = e.EventId.ToString()
                    },
                    _ => Uuid.FromGuid(e.EventId).ToDto()
                },
            public ReadAllForwardsFiltered(IPublisher bus,
                                           Position position,
                                           ulong maxCount,
                                           bool resolveLinks,
                                           IEventFilter eventFilter,
                                           ClaimsPrincipal user,
                                           bool requiresLeader,
                                           IReadIndex readIndex,
                                           uint?maxSearchWindow,
                                           DateTime deadline,
                                           ReadReq.Types.Options.Types.UUIDOption uuidOption,
                                           CancellationToken cancellationToken)
            {
                if (bus == null)
                {
                    throw new ArgumentNullException(nameof(bus));
                }

                if (eventFilter == null)
                {
                    throw new ArgumentNullException(nameof(eventFilter));
                }

                if (readIndex == null)
                {
                    throw new ArgumentNullException(nameof(readIndex));
                }

                _bus               = bus;
                _maxCount          = maxCount;
                _resolveLinks      = resolveLinks;
                _eventFilter       = eventFilter;
                _user              = user;
                _requiresLeader    = requiresLeader;
                _readIndex         = readIndex;
                _maxSearchWindow   = maxSearchWindow ?? ReadBatchSize;
                _deadline          = deadline;
                _uuidOption        = uuidOption;
                _cancellationToken = cancellationToken;
                _semaphore         = new SemaphoreSlim(1, 1);
                _channel           = Channel.CreateBounded <ReadResp>(BoundedChannelOptions);

                ReadPage(position);
            }
            public AllSubscription(IPublisher bus,
                                   Position?startPosition,
                                   bool resolveLinks,
                                   ClaimsPrincipal user,
                                   bool requiresLeader,
                                   IReadIndex readIndex,
                                   ReadReq.Types.Options.Types.UUIDOption uuidOption,
                                   CancellationToken cancellationToken)
            {
                if (bus == null)
                {
                    throw new ArgumentNullException(nameof(bus));
                }

                if (readIndex == null)
                {
                    throw new ArgumentNullException(nameof(readIndex));
                }

                _subscriptionId    = Guid.NewGuid();
                _bus               = bus;
                _resolveLinks      = resolveLinks;
                _user              = user;
                _requiresLeader    = requiresLeader;
                _readIndex         = readIndex;
                _uuidOption        = uuidOption;
                _cancellationToken = cancellationToken;
                _channel           = Channel.CreateBounded <ReadResp>(BoundedChannelOptions);
                _semaphore         = new SemaphoreSlim(1, 1);

                _subscriptionStarted = 0;

                SubscriptionId = _subscriptionId.ToString();

                Subscribe(startPosition);
            }