Пример #1
0
 private static void RunWorker()
 {
     while (true)
     {
         try
         {
             var resultsBatch = default(List <AuditorResultMessage>);
             lock (results)
             {
                 if (results.Count != 0)
                 {
                     resultsBatch = results.Take(Global.MaxMessageBatchSize).ToList();
                     var removeCount = Math.Min(Global.MaxMessageBatchSize, results.Count);
                     results.RemoveRange(0, removeCount);
                 }
             }
             if (resultsBatch != default)
             {
                 OutgoingMessageStorage.EnqueueMessage(new AuditorResultsBatch {
                     AuditorResultMessages = resultsBatch
                 });
                 continue;
             }
             Thread.Sleep(50);
         }
         catch (Exception exc)
         {
             logger.Error(exc);
         }
     }
 }
Пример #2
0
        public override async Task <ResultMessage> Process(ProcessorContext context)
        {
            var initQuantum = (ConstellationInitQuantum)context.Envelope.Message;

            context.EffectProcessors.AddConstellationInit(initQuantum);
            var initSnapshot = PersistenceManager.GetSnapshot(
                (ConstellationInitEffect)context.EffectProcessors.Effects[0],
                context.Envelope.ComputeHash()
                );
            await Global.Setup(initSnapshot);

            Global.AppState.State = ApplicationState.Running;
            if (!Global.IsAlpha) //set auditor to Ready state after init
            {
                //send new apex cursor message to notify Alpha that the auditor was initialized
                OutgoingMessageStorage.EnqueueMessage(new SetApexCursor {
                    Apex = 1
                });
                Global.AppState.State = ApplicationState.Ready;
            }

            return(context.Envelope.CreateResult(ResultStatusCodes.Success, context.EffectProcessors.Effects));
        }
 private void PerformanceStatisticsManager_OnUpdates(PerformanceStatistics statistics)
 {
     OutgoingMessageStorage.EnqueueMessage(statistics.ToModel());
 }