Skip to content

Commit 34f10d7

Browse files
committed
fix: Allocate string lists in http client once instead of each update
1 parent 890f30a commit 34f10d7

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

Runtime/Client/LootLockerHTTPClient.cs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,8 @@ public void OverrideCertificateHandler(CertificateHandler certificateHandler)
216216

217217
private Dictionary<string, LootLockerHTTPExecutionQueueItem> HTTPExecutionQueue = new Dictionary<string, LootLockerHTTPExecutionQueueItem>();
218218
private List<string> CompletedRequestIDs = new List<string>();
219+
private List<string> ExecutionItemsNeedingRefresh = new List<string>();
220+
private List<string> OngoingIdsToCleanUp = new List<string>();
219221

220222
private void OnDestroy()
221223
{
@@ -230,13 +232,14 @@ private void OnDestroy()
230232

231233
void Update()
232234
{
233-
List<string> ExecutionItemsNeedingRefresh = new List<string>();
234-
foreach(var executionItem in HTTPExecutionQueue.Values)
235+
ExecutionItemsNeedingRefresh.Clear();
236+
// Process the execution queue
237+
foreach (var executionItem in HTTPExecutionQueue.Values)
235238
{
236239
// Skip completed requests
237-
if(executionItem.Done)
240+
if (executionItem.Done)
238241
{
239-
if(!CompletedRequestIDs.Contains(executionItem.RequestData.RequestId))
242+
if (!CompletedRequestIDs.Contains(executionItem.RequestData.RequestId))
240243
{
241244
CompletedRequestIDs.Add(executionItem.RequestData.RequestId);
242245
}
@@ -252,7 +255,7 @@ void Update()
252255
// Send unsent
253256
if (executionItem.AsyncOperation == null && executionItem.WebRequest == null)
254257
{
255-
if(executionItem.RetryAfter != null && executionItem.RetryAfter > DateTime.Now)
258+
if (executionItem.RetryAfter != null && executionItem.RetryAfter > DateTime.Now)
256259
{
257260
// Wait for retry
258261
continue;
@@ -271,13 +274,13 @@ void Update()
271274
// Process ongoing
272275
var Result = ProcessOngoingRequest(executionItem);
273276

274-
if(Result == HTTPExecutionQueueProcessingResult.NeedsSessionRefresh)
277+
if (Result == HTTPExecutionQueueProcessingResult.NeedsSessionRefresh)
275278
{
276279
//Bulk handle session refreshes at the end
277280
ExecutionItemsNeedingRefresh.Add(executionItem.RequestData.RequestId);
278281
continue;
279282
}
280-
else if(Result == HTTPExecutionQueueProcessingResult.WaitForNextTick || Result == HTTPExecutionQueueProcessingResult.None)
283+
else if (Result == HTTPExecutionQueueProcessingResult.WaitForNextTick || Result == HTTPExecutionQueueProcessingResult.None)
281284
{
282285
// Nothing to handle, simply continue
283286
continue;
@@ -402,11 +405,11 @@ private void LateUpdate()
402405
CompletedRequestIDs.Add(ExecutionItem.RequestData.RequestId);
403406
}
404407
}
405-
406-
List<string> OngoingIdsToCleanUp = new List<string>();
407-
foreach(string OngoingId in CurrentlyOngoingRequests.Keys)
408+
409+
OngoingIdsToCleanUp.Clear();
410+
foreach (string OngoingId in CurrentlyOngoingRequests.Keys)
408411
{
409-
if(!HTTPExecutionQueue.TryGetValue(OngoingId, out var executionQueueItem) || executionQueueItem.Done)
412+
if (!HTTPExecutionQueue.TryGetValue(OngoingId, out var executionQueueItem) || executionQueueItem.Done)
410413
{
411414
OngoingIdsToCleanUp.Add(OngoingId);
412415
}

0 commit comments

Comments
 (0)