MCPcopy Create free account
hub / github.com/defold/defold / HandleCachedVerified

Function HandleCachedVerified

engine/dlib/src/dlib/http_client.cpp:1233–1267  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1231
1232#if !defined(DM_NO_HTTP_CACHE)
1233 static Result HandleCachedVerified(HClient client, const dmHttpCache::EntryInfo* info)
1234 {
1235 Response response(client);
1236 client->m_Statistics.m_DirectFromCache++;
1237
1238 FILE* file = 0;
1239 uint32_t file_size = 0;
1240 uint64_t checksum;
1241 uint32_t range_start;
1242 uint32_t range_end;
1243 uint32_t document_size;
1244
1245 dmHttpCache::Result cache_result = dmHttpCache::Get(client->m_HttpCache, client->m_CacheKey, info->m_ETag, &file, &file_size, &checksum,
1246 &range_start, &range_end, &document_size);
1247 if (cache_result == dmHttpCache::RESULT_OK)
1248 {
1249 // NOTE: We have an extra byte for null-termination so no buffer overrun here.
1250 size_t nread;
1251 do
1252 {
1253 nread = fread(client->m_Buffer, 1, BUFFER_SIZE, file);
1254 client->m_Buffer[nread] = '\0';
1255 client->m_HttpContent(&response, client->m_Userdata, 304, client->m_Buffer, nread, file_size,
1256 range_start, range_end, document_size,
1257 "GET");
1258 }
1259 while (nread > 0);
1260 dmHttpCache::Release(client->m_HttpCache, client->m_CacheKey, info->m_ETag, file);
1261 return RESULT_NOT_200_OK;
1262 }
1263 else
1264 {
1265 return RESULT_IO_ERROR;
1266 }
1267 }
1268#endif
1269
1270 Result SetCacheKey(HClient client, const char* key)

Callers 1

GetFunction · 0.85

Calls 2

GetFunction · 0.70
ReleaseFunction · 0.70

Tested by

no test coverage detected