public void HandleEvent(IEvent @event) { if (null == @event) { return; } if (null != @event.Transaction) { ServerResources.Dispose(@event.Transaction); AddStatistics(@event); } var tempQueue = new Queue <Transaction>(); while (TransactionsQueue.TryDequeue(out var transaction)) { if (ServerResources.IsHandleAllowed(transaction)) { ServerResources.AllocateForTransaction(transaction); EventsCollector.AddEvent(new OutputEvent(transaction)); } else { tempQueue.Enqueue(transaction); } } while (tempQueue.TryDequeue(out var transaction)) { TransactionsQueue.Enqueue(transaction); } }
private void commandToolStripMenuItem_Click(object sender, EventArgs e) { UpdateOutput("A account is created, transaction commands are queued up then committed, the results are displayed."); BankAccount bankAccount = new BankAccount(); TransactionsQueue queue = new TransactionsQueue(); CommandAbstract command; UpdateOutput("Beginning account balance: " + bankAccount.Balance.ToString()); command = new DepositCommand(bankAccount, 50); queue.AddTransaction(command); UpdateOutput("Depositing 50"); command = new DepositCommand(bankAccount, 20); queue.AddTransaction(command); UpdateOutput("Depositing 20"); command = new WithdrawCommand(bankAccount, 10); queue.AddTransaction(command); UpdateOutput("Withdrawing 10"); UpdateOutput("Before committing account balance: " + bankAccount.Balance.ToString()); queue.CommitTransactions(); UpdateOutput("Final account balance: " + bankAccount.Balance.ToString()); }
public void TransactionQueueAddTest() { BankAccount bankAccount = new BankAccount(); WithdrawCommand command = new WithdrawCommand(bankAccount, 10); TransactionsQueue queue = new TransactionsQueue(); queue.AddTransaction(command); Assert.AreEqual(queue.TransactionQueueCount, 1); }
public void HandleEvent(IEvent @event) { var transaction = _transactionCreator.CreateTransactionByType(); AddStatistics(transaction); if (ServerResources.IsHandleAllowed(transaction)) { ServerResources.AllocateForTransaction(transaction); EventsCollector.AddEvent(new OutputEvent(transaction)); } else { TransactionsQueue.Enqueue(transaction); } EventsCollector.AddEvent(new InputEvent()); }
public void QueueTransaction(ITransaction transaction) => TransactionsQueue.Enqueue(transaction);
public void TransactionsQueueCreateTest() { TransactionsQueue command = new TransactionsQueue(); Assert.IsInstanceOfType(command, typeof(TransactionsQueue)); }