public async Task <CommandHandlingResult> Handle(AcquireLockCommand command, IEventPublisher publisher) { var transactionExecution = await _repository.GetAsync(command.TransactionId); if (transactionExecution.LockAcquired) { _log.Info("Address lock command has been skipped, since lock already was performed earlier", command); return(CommandHandlingResult.Ok()); } if (await _locker.TryLockAsync(command.TransactionId)) { publisher.PublishEvent(new LockAcquiredEvent { TransactionId = command.TransactionId }); } else { publisher.PublishEvent(new LockRejectedEvent { TransactionId = command.TransactionId }); } _chaosKitty.Meow(command.TransactionId); return(CommandHandlingResult.Ok()); }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: private java.util.concurrent.Future<Void> perform(AcquireLockCommand acquireLockCommand, boolean wait) throws Exception private Future <Void> Perform(AcquireLockCommand acquireLockCommand, bool wait) { Future <Void> future = ExecuteDontWait(acquireLockCommand); if (wait) { AwaitFuture(future); } else { WaitUntilWaiting(); } return(future); }