Esempio n. 1
0
        public async Task <NewTransactionResponse> BeginTransactionAsync(TransactionProperties transactionProperties, CancellationToken cancellationToken)
        {
            var timeout = transactionProperties.TransactionTimeout ?? this.transactionSettings.DefaultTransactionTimeout;

            if (timeout <= TimeSpan.Zero)
            {
                throw new ArgumentOutOfRangeException(nameof(transactionProperties), "transactionProperties.TransactionTimeout must be equal to or greater than 0");
            }

            await this.StartTransactionTimeoutReminderAsync(timeout);

            await this.StateManager.AddStateAsync(StateConstants.TransactionEnd, timeout, cancellationToken);

            await this.StateManager.AddStateAsync(StateConstants.TransactionParticipants, TransactionParticipants.Empty, cancellationToken);

            var transactionId = new TransactionId(this.GetActorId());

            await this.StateManager.AddStateAsync(StateConstants.TransactionEnd, timeout, cancellationToken);

            var commitKey = Guid.NewGuid();

            await this.StateManager.AddStateAsync(StateConstants.CommitTransactionKey, commitKey, cancellationToken);

            await this.SetTransactionStateStatusAsync(TransactionStatus.Active, cancellationToken);

            return(new NewTransactionResponse(transactionId, commitKey));
        }
Esempio n. 2
0
        private string PropToText(TransactionProperties prop)
        {
            int padding = 20;

            var debug = "";

            debug += "Id".PadRight(padding, ' ') + ":" + prop.Tx + "\n";
            debug += "Status".PadRight(padding, ' ') + ":" + prop.Status + "\n";
            debug += "Length".PadRight(padding, ' ') + ":" + prop.Length + "\n";
            debug += "Linked Tx's".PadRight(padding, ' ') + ":" + prop.LinkedTransactions.Count + "\n";
            debug += "File Type: " + prop.FileType;

            return(debug);
        }