コード例 #1
0
 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;
     }
 }
コード例 #2
0
        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();
            }
        }