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); } } } }
public abstract Task Reply(SocialTipStatusResponse response);