51 lines
2.0 KiB
Lua
51 lines
2.0 KiB
Lua
local percentReporting = tonumber(settings():GetFVariable("PercentReportingNetworkProfileAfterStartup"))
|
|
|
|
local FEATURE_NAME = "NetworkProfileDuringStartup"
|
|
local QUEUED_MEASURE_NAME = "Queued"
|
|
local NAME_LOOKUP_MEASURE_NAME = "NameLookup"
|
|
local CONNECT_MEASURE_NAME = "Connect"
|
|
local SSL_HANDSHAKE_MEASURE_NAME = "SSLHandshake"
|
|
local MAKE_REQUEST_MEASURE_NAME = "MakeRequest"
|
|
local RECEIVE_RESPONSE_MEASURE_NAME = "ReceiveResponse"
|
|
|
|
local NetworkProfiler = {}
|
|
NetworkProfiler.__index = NetworkProfiler
|
|
|
|
NetworkProfiler.aggregate = {
|
|
queued = 0.0,
|
|
nameLookup = 0.0,
|
|
connect = 0.0,
|
|
sslHandshake = 0.0,
|
|
makeRequest = 0.0,
|
|
receiveResponse = 0.0,
|
|
}
|
|
|
|
function NetworkProfiler:track(timeProfile)
|
|
self.aggregate.queued = self.aggregate.queued + timeProfile.queued
|
|
if timeProfile.nameLookup >= 0 then
|
|
self.aggregate.nameLookup = self.aggregate.nameLookup + timeProfile.nameLookup
|
|
end
|
|
if timeProfile.connect >= 0 then
|
|
self.aggregate.connect = self.aggregate.connect + timeProfile.connect
|
|
end
|
|
if timeProfile.sslHandshake >= 0 then
|
|
self.aggregate.sslHandshake = self.aggregate.sslHandshake + timeProfile.sslHandshake
|
|
end
|
|
if timeProfile.makeRequest >= 0 then
|
|
self.aggregate.makeRequest = self.aggregate.makeRequest + timeProfile.makeRequest
|
|
end
|
|
if timeProfile.receiveResponse >= 0 then
|
|
self.aggregate.receiveResponse = self.aggregate.receiveResponse + timeProfile.receiveResponse
|
|
end
|
|
end
|
|
|
|
function NetworkProfiler:report(reportToDiag)
|
|
reportToDiag(FEATURE_NAME, QUEUED_MEASURE_NAME, self.aggregate.queued, percentReporting)
|
|
reportToDiag(FEATURE_NAME, NAME_LOOKUP_MEASURE_NAME, self.aggregate.nameLookup, percentReporting)
|
|
reportToDiag(FEATURE_NAME, CONNECT_MEASURE_NAME, self.aggregate.connect, percentReporting)
|
|
reportToDiag(FEATURE_NAME, SSL_HANDSHAKE_MEASURE_NAME, self.aggregate.sslHandshake, percentReporting)
|
|
reportToDiag(FEATURE_NAME, MAKE_REQUEST_MEASURE_NAME, self.aggregate.makeRequest, percentReporting)
|
|
reportToDiag(FEATURE_NAME, RECEIVE_RESPONSE_MEASURE_NAME, self.aggregate.receiveResponse, percentReporting)
|
|
end
|
|
|
|
return NetworkProfiler |