Example #1
0
        private async void TimerQueueSendKinOnElapsed(object sender, ElapsedEventArgs e)
        {
            if (_queueItems.IsEmpty)
            {
                return;
            }

            SocialQueuedItem item = null;

            try
            {
                if (!_queueItems.TryDequeue(out item))
                {
                    return;
                }

                if (DateTime.Now < item.DelayTil)
                {
                    _queueItems.Enqueue(item);
                    return;
                }

                SocialTipStatusResponse response = await Tip(item.TransactionId).ConfigureAwait(false);

                if (response.Status != TransactionStatus.Queued && response.Status != TransactionStatus.Error &&
                    response.Status != TransactionStatus.MarketPlaceApiError)
                {
                    await item.Reply(response).ConfigureAwait(false);

                    ;
                }
                else
                {
                    Enqueue(item);
                }
            }
            catch (ApiException ea)
            {
                if (ea.StatusCode != HttpStatusCode.NotFound)
                {
                    if (item != null)
                    {
                        Enqueue(item);
                    }
                }
            }
        }
Example #2
0
 public abstract Task Reply(SocialTipStatusResponse response);