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));
        }
Ejemplo n.º 2
0
        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
        }