private void DeliverEvent(ResolvedEventRecord @event, long lastCommitPosition)
        {
            EventRecord positionEvent    = (@event.Link ?? @event.Event);
            var         receivedPosition = new EventPosition(@event.CommitPosition, positionEvent.LogPosition);

            if (_from > receivedPosition)
            {
                throw new Exception(
                          string.Format(
                              "ReadFromTF returned events in incorrect order.  Last known position is: {0}.  Received position is: {1}",
                              _from, receivedPosition));
            }

            _publisher.Publish(
                new ProjectionCoreServiceMessage.CommittedEventDistributed(
                    _distibutionPointCorrelationId, receivedPosition, positionEvent.EventStreamId,
                    positionEvent.EventNumber, @event.Event.EventStreamId, @event.Event.EventNumber, @event.Link != null,
                    new Event(
                        @event.Event.EventId, @event.Event.EventType, (@event.Event.Flags & PrepareFlags.IsJson) != 0,
                        @event.Event.Data, @event.Event.Metadata), receivedPosition.PreparePosition, 100.0f * positionEvent.LogPosition / lastCommitPosition));
        }
コード例 #2
0
        private ReadAllResult ResolveReadAllResult(IndexReadAllResult res, bool resolveLinks)
        {
            var resolved = new ResolvedEventRecord[res.Records.Count];

            if (resolveLinks)
            {
                for (int i = 0; i < resolved.Length; ++i)
                {
                    var record         = res.Records[i];
                    var resolvedRecord = ResolveLinkToEvent(record.Event);
                    resolved[i] = new ResolvedEventRecord(resolvedRecord == null ? record.Event : resolvedRecord,
                                                          resolvedRecord == null ? null : record.Event,
                                                          record.CommitPosition);
                }
            }
            else
            {
                for (int i = 0; i < resolved.Length; ++i)
                {
                    resolved[i] = new ResolvedEventRecord(res.Records[i].Event, null, res.Records[i].CommitPosition);
                }
            }
            return(new ReadAllResult(resolved, res.MaxCount, res.CurrentPos, res.NextPos, res.PrevPos, res.TfEofPosition));
        }