Example #1
0
        private async Task SendItemsToCollector()
        {
            IEnumerable <SessionCollection> repo = null;

            var ls = await _persistentStorage.GetLastSyncDateTime();

            if (ls.HasValue && (ls.Value > DateTime.UtcNow.AddMinutes(-this._queueRetentionMinutes)))
            {
                repo = await _persistentStorage.Get();

                if (repo.Sum(g => g.Collection.Payloads.Count) < this._queueSize)
                {
                    return;
                }
            }

            if (repo == null)
            {
                repo = await _persistentStorage.Get();
            }

            bool wasSuccessPublish = false;

            // TODO paralell run
            foreach (var eventCollection in repo)
            {
                var isSuccess = await this._eventPublisher.Send(eventCollection, this._sharedSecretKey);

                if (isSuccess)
                {
                    await _persistentStorage.Delete(eventCollection);

                    wasSuccessPublish = true;
                }
            }

            if (wasSuccessPublish)
            {
                await _persistentStorage.SetLastSyncDateTime(DateTime.UtcNow);
            }
        }