private void TryHandleTxCommit() { try { while (!isStoped) { var nextCursor = alphaListener.PeekCursor(); if (TryGetTxCommit(nextCursor, out var txCommit)) { alphaListener.DequeueCursor(); var ledgerCommitEnvelope = txCommit.CreateEnvelope(); Context.QuantumHandler.HandleAsync(ledgerCommitEnvelope); } else { Thread.Sleep(100); } } } catch (Exception exc) { logger.Error(exc, "Error on tx commit processing."); Context.AppState.State = ApplicationState.Failed; } }
private async Task TryHandleTxCommit() { await semaphore.WaitAsync(); try { while (true) { var nextCursor = alphaListener.PeekCursor(); if (pendingTxCommits.Remove(nextCursor, out var txCommit)) { alphaListener.DequeueCursor(); var ledgerCommitEnvelope = txCommit.CreateEnvelope(); await Global.QuantumHandler.HandleAsync(ledgerCommitEnvelope); } else { break; } } } catch (Exception exc) { logger.Error(exc, "Error on tx commit processing."); Global.AppState.State = ApplicationState.Failed; } finally { semaphore.Release(); } }