@@ -607,7 +607,7 @@ local function nodeEntriesTableKeySort(a, b)
607
607
elseif !aIsTable && bIsTable then
608
608
return false
609
609
else
610
- return a .key < b .key
610
+ return tostring ( a .key ) < tostring ( b .key ) -- Just in case.. (It's here for a reason :))
611
611
end
612
612
end
613
613
@@ -1313,10 +1313,20 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
1313
1313
end
1314
1314
end
1315
1315
subModuleTab .PaintOver = function (s ,w ,h )
1316
- if subModuleData .retrievingData then
1316
+ if luaState == " Server " and subModuleData .retrievingData then
1317
1317
surface .SetDrawColor (50 ,50 ,50 ,100 )
1318
1318
surface .DrawRect (0 ,0 ,w ,h )
1319
1319
draw .SimpleTextOutlined (" Retrieving data.." , " HudDefault" , w / 2 , h / 2 , Color (255 ,255 ,255 ), TEXT_ALIGN_CENTER , TEXT_ALIGN_CENTER , 1 , Color (0 ,0 ,0 ))
1320
+
1321
+ local subModuleFullName = moduleName .. " ." .. subModuleName
1322
+ if blobsProfiler .chunkModuleData [subModuleFullName ] and blobsProfiler .chunkModuleData [subModuleFullName ].receivedChunks then
1323
+ local recvChunks = # blobsProfiler .chunkModuleData [subModuleFullName ].receivedChunks
1324
+ local totChunks = blobsProfiler .chunkModuleData [subModuleFullName ].totalChunks
1325
+
1326
+ if recChunks ~= totChunks then
1327
+ draw .SimpleTextOutlined (recvChunks .. " /" .. totChunks , " HudDefault" , w / 2 , h / 2 + 15 , Color (255 ,255 ,255 ), TEXT_ALIGN_CENTER , TEXT_ALIGN_CENTER , 1 , Color (0 ,0 ,0 ))
1328
+ end
1329
+ end
1320
1330
end
1321
1331
end
1322
1332
@@ -1341,10 +1351,19 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
1341
1351
end
1342
1352
1343
1353
moduleTab .PaintOver = function (s ,w ,h )
1344
- if moduleData .retrievingData then
1354
+ if luaState == " Server " and moduleData .retrievingData then
1345
1355
surface .SetDrawColor (50 ,50 ,50 ,100 )
1346
1356
surface .DrawRect (0 ,0 ,w ,h )
1347
- draw .SimpleTextOutlined (" Retrieving data.." , " HudDefault" , w / 2 , h / 2 , Color (255 ,255 ,255 ), TEXT_ALIGN_CENTER , TEXT_ALIGN_CENTER , 1 , Color (0 ,0 ,0 ))
1357
+ draw .SimpleTextOutlined (" Retrieving data.." , " HudDefault" , w / 2 , h / 2 - 15 , Color (255 ,255 ,255 ), TEXT_ALIGN_CENTER , TEXT_ALIGN_CENTER , 1 , Color (0 ,0 ,0 ))
1358
+
1359
+ if blobsProfiler .chunkModuleData [moduleName ] and blobsProfiler .chunkModuleData [moduleName ].receivedChunks then
1360
+ local recvChunks = # blobsProfiler .chunkModuleData [moduleName ].receivedChunks
1361
+ local totChunks = blobsProfiler .chunkModuleData [moduleName ].totalChunks
1362
+
1363
+ if recChunks ~= totChunks then
1364
+ draw .SimpleTextOutlined (recvChunks .. " /" .. totChunks , " HudDefault" , w / 2 , h / 2 + 15 , Color (255 ,255 ,255 ), TEXT_ALIGN_CENTER , TEXT_ALIGN_CENTER , 1 , Color (0 ,0 ,0 ))
1365
+ end
1366
+ end
1348
1367
end
1349
1368
end
1350
1369
@@ -1396,7 +1415,7 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
1396
1415
tabMenu :OnActiveTabChanged (nil , tabMenu :GetActiveTab ()) -- lol
1397
1416
end )
1398
1417
1399
- netstream . Hook ( " blobsProfiler:requestData " , function (rawModuleName , rawDataTable )
1418
+ local function handleSVDataUpdate (rawModuleName , dataTable )
1400
1419
local moduleSplit = string .Explode (" ." , rawModuleName ) -- [1] is parent, [2] is submodule
1401
1420
local moduleName = moduleSplit [1 ]
1402
1421
local subModule = nil
@@ -1406,15 +1425,6 @@ netstream.Hook("blobsProfiler:requestData", function(rawModuleName, rawDataTable
1406
1425
if # moduleSplit == 2 then -- ew
1407
1426
subModule = moduleSplit [2 ]
1408
1427
end
1409
-
1410
- local decompressedData = util .Decompress (rawDataTable )
1411
- if not decompressedData then
1412
- blobsProfiler .Log (blobsProfiler .L_ERROR , " Failed to decompress SV data for: " .. rawModuleName )
1413
- end
1414
- local dataTable = util .JSONToTable (decompressedData )
1415
- if not dataTable then
1416
- blobsProfiler .Log (blobsProfiler .L_ERROR , " Failed to deserialise SV data for: " .. rawModuleName )
1417
- end
1418
1428
1419
1429
if not subModule then
1420
1430
if blobsProfiler .Modules [moduleName ] then
@@ -1437,6 +1447,35 @@ netstream.Hook("blobsProfiler:requestData", function(rawModuleName, rawDataTable
1437
1447
end
1438
1448
end
1439
1449
end
1450
+ end
1451
+
1452
+ blobsProfiler .chunkModuleData = {}
1453
+
1454
+ net .Receive (" blobsProfiler:requestData" , function ()
1455
+ local moduleName = net .ReadString ()
1456
+ local totalChunks = net .ReadUInt (16 )
1457
+ local currentChunk = net .ReadUInt (16 )
1458
+ local chunkData = net .ReadData (blobsProfiler .svDataChunkSize )
1459
+
1460
+ if not blobsProfiler .chunkModuleData [moduleName ] then
1461
+ blobsProfiler .chunkModuleData [moduleName ] = {
1462
+ totalChunks = totalChunks ,
1463
+ receivedChunks = {},
1464
+ }
1465
+ end
1466
+
1467
+ if not blobsProfiler .chunkModuleData [moduleName ].receivedChunks then
1468
+ blobsProfiler .chunkModuleData [moduleName ].receivedChunks = {}
1469
+ end
1470
+
1471
+ table.insert (blobsProfiler .chunkModuleData [moduleName ].receivedChunks , chunkData )
1472
+
1473
+ if # blobsProfiler .chunkModuleData [moduleName ].receivedChunks == totalChunks then
1474
+ local fullData = table.concat (blobsProfiler .chunkModuleData [moduleName ].receivedChunks )
1475
+ blobsProfiler .chunkModuleData [moduleName ] = util .JSONToTable (util .Decompress (fullData ))
1476
+
1477
+ handleSVDataUpdate (moduleName , blobsProfiler .chunkModuleData [moduleName ])
1478
+ end
1440
1479
end )
1441
1480
1442
1481
blobsProfiler .buildDTree = buildDTree
0 commit comments