mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 14:33:31 +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()) {
|
||||
incomingPacket.resize(nodeList->getNodeSocket().pendingDatagramSize());
|
||||
nodeList->getNodeSocket().readDatagram(incomingPacket.data(), incomingPacket.size());
|
||||
nodeList->getNodeSocket().readDatagram(incomingPacket.data(), incomingPacket.size(),
|
||||
senderSockAddr.getAddressPointer(), senderSockAddr.getPortPointer());
|
||||
|
||||
_packetCount++;
|
||||
_byteCount += incomingPacket.size();
|
||||
|
|
|
@ -46,11 +46,12 @@ Assignment::Assignment() :
|
|||
_uuid(),
|
||||
_command(Assignment::RequestCommand),
|
||||
_type(Assignment::AllTypes),
|
||||
_pool(),
|
||||
_location(Assignment::LocalLocation),
|
||||
_numberOfInstances(1),
|
||||
_payload()
|
||||
{
|
||||
setPool(NULL);
|
||||
|
||||
}
|
||||
|
||||
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
|
||||
_uuid = QUuid::createUuid();
|
||||
}
|
||||
|
||||
setPool(pool);
|
||||
}
|
||||
|
||||
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._uuid;
|
||||
out << node._publicSocket;
|
||||
|
@ -143,7 +143,7 @@ QDataStream& operator>>(QDataStream& out, const Node& node) {
|
|||
return out;
|
||||
}
|
||||
|
||||
QDataStream& operator<<(QDataStream& in, Node& node) {
|
||||
QDataStream& operator>>(QDataStream& in, Node& node) {
|
||||
in >> node._type;
|
||||
in >> node._uuid;
|
||||
in >> node._publicSocket;
|
||||
|
|
|
@ -88,8 +88,8 @@ public:
|
|||
void setClockSkewUsec(int clockSkew) { _clockSkewUsec = clockSkew; }
|
||||
QMutex& getMutex() { return _mutex; }
|
||||
|
||||
friend QDataStream& operator>>(QDataStream& out, const Node& node);
|
||||
friend QDataStream& operator<<(QDataStream& in, Node& node);
|
||||
friend QDataStream& operator<<(QDataStream& out, const Node& node);
|
||||
friend QDataStream& operator>>(QDataStream& in, Node& node);
|
||||
|
||||
private:
|
||||
// privatize copy and assignment operator to disallow Node copying
|
||||
|
|
|
@ -506,7 +506,7 @@ int NodeList::processDomainServerList(const QByteArray& packet) {
|
|||
QDataStream packetStream(packet);
|
||||
packetStream.skipRawData(numBytesForPacketHeader(packet));
|
||||
|
||||
while(!packetStream.atEnd()) {
|
||||
while(packetStream.device()->pos() < packet.size()) {
|
||||
packetStream >> nodeType >> nodeUUID >> nodePublicSocket >> nodeLocalSocket;
|
||||
|
||||
// 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 replyPacket;
|
||||
|
||||
uint64_t timeFromOriginalPing;
|
||||
memcpy(&timeFromOriginalPing, pingPacket.data() + numBytesForPacketHeader(pingPacket), sizeof(timeFromOriginalPing));
|
||||
|
||||
QDataStream packetStream(replyPacket);
|
||||
|
||||
packetStream.device()->seek(populatePacketHeader(replyPacket, PacketTypePingReply));
|
||||
QByteArray replyPacket = byteArrayWithPopluatedHeader(PacketTypePingReply);
|
||||
QDataStream packetStream(&replyPacket, QIODevice::Append);
|
||||
|
||||
packetStream << timeFromOriginalPing << usecTimestampNow();
|
||||
|
||||
|
@ -574,7 +571,7 @@ void NodeList::pingPublicAndLocalSocketsForInactiveNode(Node* node) {
|
|||
}
|
||||
|
||||
SharedNodePointer NodeList::addOrUpdateNode(const QUuid& uuid, char nodeType,
|
||||
const HifiSockAddr& publicSocket, const HifiSockAddr& localSocket) {
|
||||
const HifiSockAddr& publicSocket, const HifiSockAddr& localSocket) {
|
||||
_nodeHashMutex.lock();
|
||||
|
||||
SharedNodePointer matchingNode = _nodeHash.value(uuid);
|
||||
|
|
Loading…
Reference in a new issue