Manages a queue of failures that need to be reported to appfail.net. Locked to provide thread safe access.
Beispiel #1
0
        public override WaitHandle DoWork()
        {
            var failOccurrences = FailQueue.Dequeue(ConfigurationModel.Instance.ReportingMinimumBatchSize);

            if (failOccurrences.Count() > 0)
            {
                var failSubmission = new FailSubmissionDto(ConfigurationModel.Instance.ApiToken, failOccurrences);

                if (!PostToService(failSubmission))
                {
                    // Submission fails, so add these back to the reporting queue
                    foreach (var occurrence in failOccurrences)
                    {
                        occurrence.IncrementSubmissionAttempts();

                        if (occurrence.SubmissionAttempts < ConfigurationModel.Instance.ReportingSubmissionAttempts)
                        {
                            FailQueue.Enqueue(occurrence);
                        }
                    }
                }
            }

            // Return the wait handle that will signal to
            // call this worker method when the queue is not empty.
            return(FailQueue.WaitHandle);
        }