private EventLinkPair[] ResolveLinkToEvents(EventRecord[] records) { var resolved = new EventLinkPair[records.Length]; for (int i = 0; i < records.Length; i++) { EventRecord eventRecord = records[i]; EventRecord resolvedRecord = _readIndex.ResolveLinkToEvent(eventRecord); resolved[i] = resolvedRecord != null ? new EventLinkPair(resolvedRecord, eventRecord) : new EventLinkPair(eventRecord, null); } return(resolved); }
void IHandle <ClientMessage.ReadStreamEventsForward> .Handle(ClientMessage.ReadStreamEventsForward message) { var lastCommitPosition = _readIndex.LastCommitPosition; EventRecord[] records; var result = _readIndex.ReadStreamEventsForward(message.EventStreamId, message.FromEventNumber, message.MaxCount, out records); var nextEventNumber = result == RangeReadResult.Success && records.Length > 0 ? records[records.Length - 1].EventNumber + 1 : -1; if (result == RangeReadResult.Success && records.Length > 1) { for (var index = 1; index < records.Length; index++) { if (records[index].EventNumber != records[index - 1].EventNumber + 1) { throw new Exception(string.Format( "Invalid order of events has been detected in read index for the event stream '{0}'. " + "The event {1} at position {2} goes after the event {3} at position {4}", message.EventStreamId, records[index].EventNumber, records[index].LogPosition, records[index - 1].EventNumber, records[index - 1].LogPosition)); } } } EventLinkPair[] resolvedPairs; if (result == RangeReadResult.Success && message.ResolveLinks) { resolvedPairs = ResolveLinkToEvents(records); } else { resolvedPairs = new EventLinkPair[records.Length]; for (int i = 0; i < records.Length; ++i) { resolvedPairs[i] = new EventLinkPair(records[i], null); } } message.Envelope.ReplyWith( new ClientMessage.ReadStreamEventsForwardCompleted(message.CorrelationId, message.EventStreamId, resolvedPairs, result, nextEventNumber, records.Length == 0 ? lastCommitPosition : (long?)null)); }
private EventLinkPair[] ResolveLinkToEvents(EventRecord[] records, bool resolveLinks) { var resolved = new EventLinkPair[records.Length]; if (resolveLinks) { for (int i = 0; i < records.Length; i++) { EventRecord eventRecord = records[i]; EventRecord resolvedRecord = ResolveLinkToEvent(eventRecord); resolved[i] = resolvedRecord != null ? new EventLinkPair(resolvedRecord, eventRecord) : new EventLinkPair(eventRecord, null); } } else { for (int i = 0; i < records.Length; ++i) { resolved[i] = new EventLinkPair(records[i], null); } } return(resolved); }
public ReadStreamEventsForwardCompleted(string eventStreamId, EventLinkPair[] events, int result, int nextEventNumber, int lastEventNumber, bool isEndOfStream, long? lastCommitPosition) { EventStreamId = eventStreamId; Events = events; Result = result; NextEventNumber = nextEventNumber; LastEventNumber = lastEventNumber; IsEndOfStream = isEndOfStream; LastCommitPosition = lastCommitPosition; }
public ReadAllEventsForwardCompleted(long commitPosition, long preparePosition, EventLinkPair[] events, long nextCommitPosition, long nextPreparePosition) { CommitPosition = commitPosition; PreparePosition = preparePosition; Events = events; NextCommitPosition = nextCommitPosition; NextPreparePosition = nextPreparePosition; }