AuroraRuntime/Source/IO/Net/AuSocketStats.cpp

72 lines
1.6 KiB
C++
Raw Normal View History

/***
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: AuSocketStats.cpp
Date: 2022-12-06
Author: Reece
***/
#include "Networking.hpp"
#include "AuSocketStats.hpp"
namespace Aurora::IO::Net
{
void SocketStats::AddBytes(AuUInt32 uBytes)
{
this->Start();
this->calculator.AddData(uBytes);
this->uLastTimeSteadyMS = AuTime::SteadyClockMS();
}
AuInt64 SocketStats::GetFirstTickTimeMS()
{
return this->uFirstTime;
}
AuInt64 SocketStats::GetLastTickTimeMS()
{
return this->calculator.GetLastFrameTimeWall();
}
AuUInt64 SocketStats::GetTotalBytesTransferred()
{
return this->calculator.GetTotalStats();
}
double SocketStats::GetApproximatedThroughput()
{
return this->calculator.GetEstimatedHertz();
}
AuUInt64 SocketStats::GetUptimeNS()
{
if (auto uStartTime = this->uStartSteadyTime)
{
if (auto uEndTime = this->uEndSteadyTime)
{
return uEndTime - uStartTime;
}
else
{
return AuTime::SteadyClockNS() - uStartTime;
}
}
else
{
return 0;
}
}
void SocketStats::Start()
{
if (!this->uFirstTime)
{
this->uFirstTime = AuTime::CurrentClockMS();
this->uStartSteadyTime = AuTime::SteadyClockNS();
}
}
void SocketStats::End()
{
this->uEndSteadyTime = AuTime::SteadyClockNS();
}
}