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