mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 23:56:29 +02:00
repair more node communication problems after refactor
This commit is contained in:
parent
ffefc529f3
commit
b009cd8e67
5 changed files with 12 additions and 15 deletions
|
@ -34,7 +34,8 @@ void DatagramProcessor::processDatagrams() {
|
||||||
|
|
||||||
while (NodeList::getInstance()->getNodeSocket().hasPendingDatagrams()) {
|
while (NodeList::getInstance()->getNodeSocket().hasPendingDatagrams()) {
|
||||||
incomingPacket.resize(nodeList->getNodeSocket().pendingDatagramSize());
|
incomingPacket.resize(nodeList->getNodeSocket().pendingDatagramSize());
|
||||||
nodeList->getNodeSocket().readDatagram(incomingPacket.data(), incomingPacket.size());
|
nodeList->getNodeSocket().readDatagram(incomingPacket.data(), incomingPacket.size(),
|
||||||
|
senderSockAddr.getAddressPointer(), senderSockAddr.getPortPointer());
|
||||||
|
|
||||||
_packetCount++;
|
_packetCount++;
|
||||||
_byteCount += incomingPacket.size();
|
_byteCount += incomingPacket.size();
|
||||||
|
|
|
@ -46,11 +46,12 @@ Assignment::Assignment() :
|
||||||
_uuid(),
|
_uuid(),
|
||||||
_command(Assignment::RequestCommand),
|
_command(Assignment::RequestCommand),
|
||||||
_type(Assignment::AllTypes),
|
_type(Assignment::AllTypes),
|
||||||
|
_pool(),
|
||||||
_location(Assignment::LocalLocation),
|
_location(Assignment::LocalLocation),
|
||||||
_numberOfInstances(1),
|
_numberOfInstances(1),
|
||||||
_payload()
|
_payload()
|
||||||
{
|
{
|
||||||
setPool(NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Assignment::Assignment(Assignment::Command command, Assignment::Type type, const QString& pool, Assignment::Location location) :
|
Assignment::Assignment(Assignment::Command command, Assignment::Type type, const QString& pool, Assignment::Location location) :
|
||||||
|
@ -65,8 +66,6 @@ Assignment::Assignment(Assignment::Command command, Assignment::Type type, const
|
||||||
// this is a newly created assignment, generate a random UUID
|
// this is a newly created assignment, generate a random UUID
|
||||||
_uuid = QUuid::createUuid();
|
_uuid = QUuid::createUuid();
|
||||||
}
|
}
|
||||||
|
|
||||||
setPool(pool);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Assignment::Assignment(const QByteArray& packet) :
|
Assignment::Assignment(const QByteArray& packet) :
|
||||||
|
|
|
@ -134,7 +134,7 @@ float Node::getAverageKilobitsPerSecond() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QDataStream& operator>>(QDataStream& out, const Node& node) {
|
QDataStream& operator<<(QDataStream& out, const Node& node) {
|
||||||
out << node._type;
|
out << node._type;
|
||||||
out << node._uuid;
|
out << node._uuid;
|
||||||
out << node._publicSocket;
|
out << node._publicSocket;
|
||||||
|
@ -143,7 +143,7 @@ QDataStream& operator>>(QDataStream& out, const Node& node) {
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
QDataStream& operator<<(QDataStream& in, Node& node) {
|
QDataStream& operator>>(QDataStream& in, Node& node) {
|
||||||
in >> node._type;
|
in >> node._type;
|
||||||
in >> node._uuid;
|
in >> node._uuid;
|
||||||
in >> node._publicSocket;
|
in >> node._publicSocket;
|
||||||
|
|
|
@ -88,8 +88,8 @@ public:
|
||||||
void setClockSkewUsec(int clockSkew) { _clockSkewUsec = clockSkew; }
|
void setClockSkewUsec(int clockSkew) { _clockSkewUsec = clockSkew; }
|
||||||
QMutex& getMutex() { return _mutex; }
|
QMutex& getMutex() { return _mutex; }
|
||||||
|
|
||||||
friend QDataStream& operator>>(QDataStream& out, const Node& node);
|
friend QDataStream& operator<<(QDataStream& out, const Node& node);
|
||||||
friend QDataStream& operator<<(QDataStream& in, Node& node);
|
friend QDataStream& operator>>(QDataStream& in, Node& node);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// privatize copy and assignment operator to disallow Node copying
|
// privatize copy and assignment operator to disallow Node copying
|
||||||
|
|
|
@ -506,7 +506,7 @@ int NodeList::processDomainServerList(const QByteArray& packet) {
|
||||||
QDataStream packetStream(packet);
|
QDataStream packetStream(packet);
|
||||||
packetStream.skipRawData(numBytesForPacketHeader(packet));
|
packetStream.skipRawData(numBytesForPacketHeader(packet));
|
||||||
|
|
||||||
while(!packetStream.atEnd()) {
|
while(packetStream.device()->pos() < packet.size()) {
|
||||||
packetStream >> nodeType >> nodeUUID >> nodePublicSocket >> nodeLocalSocket;
|
packetStream >> nodeType >> nodeUUID >> nodePublicSocket >> nodeLocalSocket;
|
||||||
|
|
||||||
// if the public socket address is 0 then it's reachable at the same IP
|
// if the public socket address is 0 then it's reachable at the same IP
|
||||||
|
@ -551,14 +551,11 @@ QByteArray NodeList::constructPingPacket() {
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray NodeList::constructPingReplyPacket(const QByteArray& pingPacket) {
|
QByteArray NodeList::constructPingReplyPacket(const QByteArray& pingPacket) {
|
||||||
QByteArray replyPacket;
|
|
||||||
|
|
||||||
uint64_t timeFromOriginalPing;
|
uint64_t timeFromOriginalPing;
|
||||||
memcpy(&timeFromOriginalPing, pingPacket.data() + numBytesForPacketHeader(pingPacket), sizeof(timeFromOriginalPing));
|
memcpy(&timeFromOriginalPing, pingPacket.data() + numBytesForPacketHeader(pingPacket), sizeof(timeFromOriginalPing));
|
||||||
|
|
||||||
QDataStream packetStream(replyPacket);
|
QByteArray replyPacket = byteArrayWithPopluatedHeader(PacketTypePingReply);
|
||||||
|
QDataStream packetStream(&replyPacket, QIODevice::Append);
|
||||||
packetStream.device()->seek(populatePacketHeader(replyPacket, PacketTypePingReply));
|
|
||||||
|
|
||||||
packetStream << timeFromOriginalPing << usecTimestampNow();
|
packetStream << timeFromOriginalPing << usecTimestampNow();
|
||||||
|
|
||||||
|
@ -574,7 +571,7 @@ void NodeList::pingPublicAndLocalSocketsForInactiveNode(Node* node) {
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedNodePointer NodeList::addOrUpdateNode(const QUuid& uuid, char nodeType,
|
SharedNodePointer NodeList::addOrUpdateNode(const QUuid& uuid, char nodeType,
|
||||||
const HifiSockAddr& publicSocket, const HifiSockAddr& localSocket) {
|
const HifiSockAddr& publicSocket, const HifiSockAddr& localSocket) {
|
||||||
_nodeHashMutex.lock();
|
_nodeHashMutex.lock();
|
||||||
|
|
||||||
SharedNodePointer matchingNode = _nodeHash.value(uuid);
|
SharedNodePointer matchingNode = _nodeHash.value(uuid);
|
||||||
|
|
Loading…
Reference in a new issue