repair more node communication problems after refactor

This commit is contained in:
Stephen Birarda 2014-01-28 12:25:44 -08:00
parent ffefc529f3
commit b009cd8e67
5 changed files with 12 additions and 15 deletions

View file

@ -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();

View file

@ -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) :

View file

@ -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;

View file

@ -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

View file

@ -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);