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)); }
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)); }