예제 #1
0
 public ResolvedEvent(EventRecord @event)
 {
     Event            = @event;
     Link             = null;
     OriginalPosition = null;
     ResolveResult    = default(ReadEventResult);
 }
예제 #2
0
 public ResolvedEvent(EventRecord @event, long commitPosition)
 {
     Event            = @event;
     Link             = null;
     OriginalPosition = new TFPos(commitPosition, @event.LogPosition);
     ResolveResult    = default(ReadEventResult);
 }
예제 #3
0
 public ResolvedEvent(EventRecord @event)
 {
     Event = @event;
     Link = null;
     OriginalPosition = null;
     ResolveResult = default(ReadEventResult);
 }
예제 #4
0
 public ResolvedEvent(EventRecord @event, long commitPosition)
 {
     Event = @event;
     Link = null;
     OriginalPosition = new TFPos(commitPosition, @event.LogPosition);
     ResolveResult = default(ReadEventResult);
 }
예제 #5
0
 public ResolvedEvent(
     EventRecord @event, EventRecord link, ReadEventResult resolveResult = default(ReadEventResult))
 {
     Event = @event;
     Link = link;
     OriginalPosition = null;
     ResolveResult = resolveResult;
 }
예제 #6
0
 public ResolvedEvent(
     EventRecord @event, EventRecord link, ReadEventResult resolveResult = default(ReadEventResult))
 {
     Event            = @event;
     Link             = link;
     OriginalPosition = null;
     ResolveResult    = resolveResult;
 }
            private void ReadIndexCheckpointStreamCompleted(
                ReadStreamResult result, EventStore.Core.Data.ResolvedEvent[] events)
            {
                if (_disposed)
                {
                    return;
                }

                if (!_indexCheckpointStreamRequested)
                {
                    throw new InvalidOperationException("Read index checkpoint has not been requested");
                }
                if (_reader.Paused)
                {
                    throw new InvalidOperationException("Paused");
                }
                _indexCheckpointStreamRequested = false;
                switch (result)
                {
                case ReadStreamResult.NoStream:
                    _reader.PauseOrContinueProcessing(delay: true);
                    _lastKnownIndexCheckpointPosition = default(TFPos);
                    break;

                case ReadStreamResult.Success:
                    if (events.Length == 0)
                    {
                        if (_lastKnownIndexCheckpointPosition == null)
                        {
                            _lastKnownIndexCheckpointPosition = default(TFPos);
                        }
                    }
                    else
                    {
                        //NOTE: only one event if backward order was requested
                        foreach (var @event in events)
                        {
                            var data = @event.Event.Data.ParseCheckpointTagJson();
                            _lastKnownIndexCheckpointEventNumber = @event.Event.EventNumber;
                            _lastKnownIndexCheckpointPosition    = data.Position;
                            // reset eofs before this point - probably some where updated so we cannot go
                            // forward with this position without making sure nothing appeared
                            // NOTE: performance is not very good, but we should switch to TF mode shortly
                            foreach (var key in _eofs.Keys.ToArray())
                            {
                                _eofs[key] = false;
                            }
                        }
                    }
                    _reader.PauseOrContinueProcessing(delay: events.Length == 0);
                    break;

                default:
                    throw new NotSupportedException(
                              String.Format("ReadEvents result code was not recognized. Code: {0}", result));
                }
            }
예제 #8
0
 public ResolvedEvent(
     EventRecord @event, EventRecord link, long commitPosition,
     ReadEventResult resolveResult = default(ReadEventResult))
 {
     Event            = @event;
     Link             = link;
     OriginalPosition = new TFPos(commitPosition, (link ?? @event).LogPosition);
     ResolveResult    = resolveResult;
 }
예제 #9
0
 public ResolvedEvent(
     EventRecord @event, EventRecord link, long commitPosition,
     ReadEventResult resolveResult = default(ReadEventResult))
 {
     Event = @event;
     Link = link;
     OriginalPosition = new TFPos(commitPosition, (link ?? @event).LogPosition);
     ResolveResult = resolveResult;
 }
 public EventReaderPartitionDeleted(
     Guid correlationId, string partition, long?lastEventNumber, TFPos?deleteLinkOrEventPosition,
     TFPos?deleteEventOrLinkTargetPosition, string positionStreamId, long?positionEventNumber,
     CheckpointTag preTagged = null, object source = null)
     : base(correlationId, preTagged, source)
 {
     _partition                       = partition;
     _lastEventNumber                 = lastEventNumber;
     _deleteLinkOrEventPosition       = deleteLinkOrEventPosition;
     _deleteEventOrLinkTargetPosition = deleteEventOrLinkTargetPosition;
     _positionStreamId                = positionStreamId;
     _positionEventNumber             = positionEventNumber;
 }
예제 #11
0
 protected void SendPartitionDeleted_WhenReadingDataStream(
     string partition, long?lastEventNumber, TFPos?deletedLinkOrEventPosition, TFPos?deletedEventPosition, string positionStreamId,
     int?positionEventNumber, CheckpointTag preTagged = null)
 {
     if (_disposed)
     {
         return;
     }
     _publisher.Publish(
         new ReaderSubscriptionMessage.EventReaderPartitionDeleted(
             EventReaderCorrelationId, partition, lastEventNumber, deletedLinkOrEventPosition,
             deletedEventPosition, positionStreamId, positionEventNumber, preTagged));
 }
예제 #12
0
 private ResolvedEvent(EventRecord @event, EventRecord link, long? commitPosition,
     ReadEventResult resolveResult = default(ReadEventResult))
 {
     Event = @event;
     Link = link;
     if (commitPosition.HasValue)
     {
         OriginalPosition = new TFPos(commitPosition.Value, (link ?? @event).LogPosition);
     }
     else
     {
         OriginalPosition = null;
     }
     ResolveResult = resolveResult;
 }
예제 #13
0
 private ResolvedEvent(EventRecord @event, EventRecord link, long?commitPosition,
                       ReadEventResult resolveResult = default(ReadEventResult))
 {
     Event = @event;
     Link  = link;
     if (commitPosition.HasValue)
     {
         OriginalPosition = new TFPos(commitPosition.Value, (link ?? @event).LogPosition);
     }
     else
     {
         OriginalPosition = null;
     }
     ResolveResult = resolveResult;
 }
예제 #14
0
 public ResolvedEvent(EventRecord @event)
 {
     Event            = @event;
     Link             = null;
     OriginalPosition = null;
 }
예제 #15
0
 public ResolvedEvent(EventRecord @event, EventRecord link)
 {
     Event            = @event;
     Link             = link;
     OriginalPosition = null;
 }
 public EventReaderPartitionDeleted(
     Guid correlationId, string partition, int? lastEventNumber, TFPos? deleteLinkOrEventPosition,
     TFPos? deleteEventOrLinkTargetPosition, string positionStreamId, int? positionEventNumber,
     CheckpointTag preTagged = null, object source = null)
     : base(correlationId, preTagged, source)
 {
     _partition = partition;
     _lastEventNumber = lastEventNumber;
     _deleteLinkOrEventPosition = deleteLinkOrEventPosition;
     _deleteEventOrLinkTargetPosition = deleteEventOrLinkTargetPosition;
     _positionStreamId = positionStreamId;
     _positionEventNumber = positionEventNumber;
 }
예제 #17
0
 public void CheckpointReached(TFPos?messagePosition)
 {
     _checkpointReached(Subscription,
                        new Position(messagePosition.Value.CommitPosition, messagePosition.Value.PreparePosition));
 }
예제 #18
0
 public ResolvedEvent(EventRecord @event, EventRecord link, long commitPosition)
 {
     Event            = @event;
     Link             = link;
     OriginalPosition = new TFPos(commitPosition, (link ?? @event).LogPosition);
 }
 public ResolvedEvent(EventRecord @event)
 {
     Event = @event;
     Link = null;
     OriginalPosition = null;
 }
 public ResolvedEvent(EventRecord @event, EventRecord link, long commitPosition)
 {
     Event = @event;
     Link = link;
     OriginalPosition = new TFPos(commitPosition, (link ?? @event).LogPosition);
 }
 public ResolvedEvent(EventRecord @event, EventRecord link)
 {
     Event = @event;
     Link = link;
     OriginalPosition = null;
 }
예제 #22
0
            private void ReadIndexCheckpointStreamCompleted(
                ReadStreamResult result, EventStore.Core.Data.ResolvedEvent[] events)
            {
                if (_disposed)
                {
                    return;
                }

                if (!_indexCheckpointStreamRequested)
                {
                    throw new InvalidOperationException("Read index checkpoint has not been requested");
                }
                if (_reader.Paused)
                {
                    throw new InvalidOperationException("Paused");
                }
                _indexCheckpointStreamRequested = false;
                switch (result)
                {
                case ReadStreamResult.NoStream:
                    _indexStreamEof = true;
                    _lastKnownIndexCheckpointPosition = default(TFPos);
                    ProcessBuffersAndContinue(null);
                    break;

                case ReadStreamResult.Success:
                    if (events.Length == 0)
                    {
                        _indexStreamEof = true;
                        if (_lastKnownIndexCheckpointPosition == null)
                        {
                            _lastKnownIndexCheckpointPosition = default(TFPos);
                        }
                    }
                    else
                    {
                        _indexStreamEof = false;
                        //NOTE: only one event if backward order was requested
                        foreach (var @event in events)
                        {
                            var data = @event.Event.Data.ParseCheckpointTagJson();
                            _lastKnownIndexCheckpointEventNumber = @event.Event.EventNumber;
                            _lastKnownIndexCheckpointPosition    = data.Position;
                            // reset eofs before this point - probably some where updated so we cannot go
                            // forward with this position without making sure nothing appeared
                            // NOTE: performance is not very good, but we should switch to TF mode shortly


                            foreach (var corrId in _validRequests)
                            {
                                _publisher.Publish(new AwakeServiceMessage.UnsubscribeAwake(corrId));
                            }
                            _validRequests.Clear();
                            _eventsRequested.Clear();
                            //TODO: cancel subscribeAwake
                            //TODO: reissue read requests
                            //TODO: make sure async completions of awake do not work

                            foreach (var key in _eofs.Keys.ToArray())
                            {
                                _eofs[key] = false;
                            }
                        }
                    }
                    ProcessBuffersAndContinue(null);
                    break;

                default:
                    throw new NotSupportedException(
                              String.Format("ReadEvents result code was not recognized. Code: {0}", result));
                }
            }