high_resolution_clock behaves differently on windows and linux

on linux, time_since_epoch returns time since linux epoch,
on windows, it returns time since system start.
Math between those values on two different types of machines
was coming out bad.
This commit is contained in:
Roxanne Skelly 2019-05-30 14:17:19 -07:00
parent dedf1b64b8
commit e12ed1c5d6
2 changed files with 8 additions and 9 deletions

View file

@ -1174,8 +1174,8 @@ void DomainServer::sendDomainListToNode(const SharedNodePointer& node, quint64 r
extendedHeaderStream << node->getPermissions();
extendedHeaderStream << limitedNodeList->getAuthenticatePackets();
extendedHeaderStream << nodeData->getLastDomainCheckinTimestamp();
extendedHeaderStream << requestPacketReceiveTime;
extendedHeaderStream << quint64(duration_cast<microseconds>(p_high_resolution_clock::now().time_since_epoch()).count());
extendedHeaderStream << duration_cast<microseconds>(system_clock::now().time_since_epoch()).count();
extendedHeaderStream << quint64(duration_cast<microseconds>(p_high_resolution_clock::now().time_since_epoch()).count()) - requestPacketReceiveTime;
auto domainListPackets = NLPacketList::create(PacketType::DomainList, extendedHeader);
// always send the node their own UUID back

View file

@ -416,7 +416,7 @@ void NodeList::sendDomainServerCheckIn() {
packetStream << FingerprintUtils::getMachineFingerprint();
}
packetStream << quint64(duration_cast<microseconds>(p_high_resolution_clock::now().time_since_epoch()).count());
packetStream << quint64(duration_cast<microseconds>(system_clock::now().time_since_epoch()).count());
// pack our data to send to the domain-server including
// the hostname information (so the domain-server can see which place name we came in on)
@ -649,21 +649,20 @@ void NodeList::processDomainServerList(QSharedPointer<ReceivedMessage> message)
bool isAuthenticated;
packetStream >> isAuthenticated;
qint64 now = qint64(duration_cast<microseconds>(p_high_resolution_clock::now().time_since_epoch()).count());
qint64 now = qint64(duration_cast<microseconds>(system_clock::now().time_since_epoch()).count());
quint64 connectRequestTimestamp;
packetStream >> connectRequestTimestamp;
quint64 domainServerRequestReceiveTime;
packetStream >> domainServerRequestReceiveTime;
quint64 domainServerPingSendTime;
packetStream >> domainServerPingSendTime;
quint64 domainServerCheckinProcessingTime;
packetStream >> domainServerCheckinProcessingTime;
qint64 pingLagTime = (now - qint64(connectRequestTimestamp)) / qint64(USECS_PER_MSEC);
qint64 domainServerRequestLag = (qint64(domainServerRequestReceiveTime) - qint64(connectRequestTimestamp)) / qint64(USECS_PER_MSEC);
quint64 domainServerCheckinProcessingTime = domainServerPingSendTime - domainServerRequestReceiveTime;
qint64 domainServerRequestLag = (qint64(domainServerPingSendTime - domainServerCheckinProcessingTime) - qint64(connectRequestTimestamp)) / qint64(USECS_PER_MSEC);;
qint64 domainServerResponseLag = (now - qint64(domainServerPingSendTime)) / qint64(USECS_PER_MSEC);
if (_domainHandler.getSockAddr().isNull()) {