public async Task <WriteResult> SetStreamMetadataAsync(string stream, long expectedMetastreamVersion, byte[] metadata, UserCredentials userCredentials = null) { Ensure.NotNullOrEmpty(stream, "stream"); if (SystemStreams.IsMetastream(stream)) { throw new ArgumentException( string.Format("Setting metadata for metastream '{0}' is not supported.", stream), nameof(stream)); } var source = TaskCompletionSourceFactory.Create <WriteResult>(); var metaevent = new EventData(Guid.NewGuid(), SystemEventTypes.StreamMetadata, true, metadata ?? Empty.ByteArray, null); var operation = new AppendToStreamOperation(Settings.Log, source, Settings.RequireLeader, SystemStreams.MetastreamOf(stream), expectedMetastreamVersion, new[] { metaevent }, userCredentials); await EnqueueOperation(operation).ConfigureAwait(false); return(await source.Task.ConfigureAwait(false)); }
public Task AppendToStreamAsync(string stream, int expectedVersion, IEnumerable <IEvent> events) { Ensure.NotNullOrEmpty(stream, "stream"); Ensure.NotNull(events, "events"); var source = new TaskCompletionSource <object>(); var operation = new AppendToStreamOperation(source, Guid.NewGuid(), stream, expectedVersion, events); EnqueueOperation(operation); return(source.Task); }
public async Task <WriteResult> AppendToStreamAsync(string stream, long expectedVersion, IEnumerable <EventData> events, UserCredentials userCredentials = null) { // ReSharper disable PossibleMultipleEnumeration Ensure.NotNullOrEmpty(stream, "stream"); Ensure.NotNull(events, "events"); var source = new TaskCompletionSource <WriteResult>(TaskCreationOptions.RunContinuationsAsynchronously); var operation = new AppendToStreamOperation(Settings.Log, source, Settings.RequireMaster, stream, expectedVersion, events, userCredentials); await EnqueueOperation(operation).ConfigureAwait(false); return(await source.Task.ConfigureAwait(false)); // ReSharper restore PossibleMultipleEnumeration }