public async Task <WriteResult> WriteStreamAsync( StreamName stream, IEventSource source, Guid causation, Guid correlation, Metadata metadata = null, CancellationToken ct = default(CancellationToken)) { if (source == null) { throw new ArgumentNullException(nameof(source)); } var resolvedStream = Configuration.Converter(stream); ct.ThrowIfCancellationRequested(); var result = await Connection.AppendToStreamAsync( resolvedStream, source.ExpectedVersion, Configuration.Translator.Translate( new EventSourceChangeset( resolvedStream, source.ExpectedVersion, causation, correlation, metadata ?? Metadata.None, source.TakeEvents() ))) .ConfigureAwait(false); source.ExpectedVersion = result.NextExpectedVersion; return(result); }
public EventSourceChangeset(StreamName stream, long expectedVersion, Guid causation, Guid correlation, Metadata metadata, object[] events) { Stream = stream; ExpectedVersion = expectedVersion; Causation = causation; Correlation = correlation; Metadata = metadata; Events = events; }
public async Task <ReadResult> ReadStreamAsync(StreamName stream, CancellationToken ct = default(CancellationToken)) { ct.ThrowIfCancellationRequested(); var resolvedStream = Configuration.Converter(stream); var slice = await Connection.ReadStreamEventsForwardAsync( resolvedStream, StreamPosition.Start, Configuration.SliceSize, false) .ConfigureAwait(false); switch (slice.Status) { case SliceReadStatus.StreamNotFound: return(ReadResult.NotFound); case SliceReadStatus.StreamDeleted: return(ReadResult.Deleted); } var eventSource = Factory(); var translator = Configuration.TranslatorFactory(); eventSource.RestoreFromEvents(translator.Translate(slice)); while (!slice.IsEndOfStream) { ct.ThrowIfCancellationRequested(); slice = await Connection.ReadStreamEventsForwardAsync( resolvedStream, slice.NextEventNumber, Configuration.SliceSize, false) .ConfigureAwait(false); switch (slice.Status) { case SliceReadStatus.StreamNotFound: return(ReadResult.NotFound); case SliceReadStatus.StreamDeleted: return(ReadResult.Deleted); } eventSource.RestoreFromEvents(translator.Translate(slice)); } eventSource.ExpectedVersion = slice.LastEventNumber; return(ReadResult.Found(eventSource)); }
public StreamNotFoundException(StreamName stream) : base($"The stream {stream} was not found.") { Stream = stream; }
public StreamDeletedException(StreamName stream) : base($"The stream {stream} was deleted.") { Stream = stream; }
public StreamDeletedException(StreamName stream, Exception innerException = null) : base($"The stream {stream} was deleted.", innerException) { Stream = stream; }
public StreamNotFoundException(string stream, Exception innerException = null) : base($"The stream {stream} was not found.", innerException) { Stream = new StreamName(stream); }