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); } }
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);