예제 #1
0
        public Task TransactionalWriteAsync(long transactionId, string stream, IEnumerable <IEvent> events)
        {
            Ensure.NotNullOrEmpty(stream, "stream");
            Ensure.NotNull(events, "events");

            var source    = new TaskCompletionSource <object>();
            var operation = new TransactionalWriteOperation(source, Guid.NewGuid(), transactionId, stream, events);

            EnqueueOperation(operation);
            return(source.Task);
        }
        async Task IEventStoreTransactionConnection.TransactionalWriteAsync(EventStoreTransaction transaction, IEnumerable <EventData> events, UserCredentials userCredentials)
        {
// ReSharper disable PossibleMultipleEnumeration
            Ensure.NotNull(transaction, "transaction");
            Ensure.NotNull(events, "events");

            var source    = new TaskCompletionSource <object>(TaskCreationOptions.RunContinuationsAsynchronously);
            var operation = new TransactionalWriteOperation(Settings.Log, source, Settings.RequireMaster,
                                                            transaction.TransactionId, events, userCredentials);

            await EnqueueOperation(operation).ConfigureAwait(false);

            await source.Task.ConfigureAwait(false);

// ReSharper restore PossibleMultipleEnumeration
        }