Revize eda1e8c7
Přidáno uživatelem Pultak před asi 3 roky(ů)
ld_client/LDClient/network/ApiClient.cs | ||
---|---|---|
94 | 94 |
$"Request body: {json},\n" + |
95 | 95 |
$"Response: {JsonConvert.SerializeObject(responseToLog)}"); |
96 | 96 |
|
97 |
private async Task ResendPayloadsAsync() { |
|
98 |
var numberOfPayloadsToResend = Math.Min(_maxRetries, _cache.EstimatedCountOfItemsInQueue); |
|
99 |
var payloads = new List<Payload>(); |
|
100 |
|
|
101 |
using (var session = _cache.OpenSession()) { |
|
102 |
for (var i = 0; i < numberOfPayloadsToResend; i++) { |
|
103 |
var rawBytes = session.Dequeue(); |
|
104 |
var payload = JsonSerializer.Deserialize<Payload>(rawBytes); |
|
105 |
if (payload is not null) { |
|
106 |
payloads.Add(payload); |
|
107 |
} |
|
108 |
} |
|
109 |
session.Flush(); |
|
110 |
} |
|
111 |
|
|
112 |
if (payloads.Count > 0) { |
|
113 |
Program.DefaultLogger.Debug($"ResendPayloadAsync -> {payloads.Count} unsent payloads"); |
|
114 |
var tasks = new List<Task>(); |
|
115 |
foreach (var payload in payloads) { |
|
116 |
Program.DefaultLogger.Info($"Resending {payload}."); |
|
117 |
tasks.Add(SendPayloadAsync(payload)); |
|
118 |
} |
|
119 |
await Task.WhenAll(tasks); |
|
120 |
} |
|
121 |
} |
|
122 |
|
|
123 |
|
|
124 |
private void CachePayload(Payload payload) { |
|
125 |
Program.DefaultLogger.Info($"Storing {payload} into the cache."); |
|
126 |
var numberOfCachedPayloads = _cache.EstimatedCountOfItemsInQueue; |
|
127 |
using var session = _cache.OpenSession(); |
|
128 |
if (numberOfCachedPayloads >= _maxEntries) { |
|
129 |
session.Dequeue(); |
|
130 |
} |
|
131 |
var payloadJson = JsonSerializer.Serialize(payload); |
|
132 |
session.Enqueue(Encoding.UTF8.GetBytes(payloadJson)); |
|
133 |
session.Flush(); |
|
134 |
} |
|
135 |
|
|
97 | 136 |
public async void Run() { |
98 | 137 |
Program.DefaultLogger.Info("Api Client thread has started"); |
99 | 138 |
_running = true; |
Také k dispozici: Unified diff
re #9441 Added core of cache manager