From 810877b8e411d7c69fa524008631e3bf1afe65a3 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 29 Jan 2014 16:05:21 -0800 Subject: [PATCH 1/2] fix some silly data-server mistakes --- data-server/src/DataServer.cpp | 19 ++++++++++++------- data-server/src/DataServer.h | 2 ++ libraries/shared/src/DataServerClient.cpp | 2 +- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/data-server/src/DataServer.cpp b/data-server/src/DataServer.cpp index 9044e6cf6a..b174ea293c 100644 --- a/data-server/src/DataServer.cpp +++ b/data-server/src/DataServer.cpp @@ -24,7 +24,8 @@ const unsigned short REDIS_PORT = 6379; DataServer::DataServer(int argc, char* argv[]) : QCoreApplication(argc, argv), _socket(), - _redis(NULL) + _redis(NULL), + _uuid(QUuid::createUuid()) { _socket.bind(QHostAddress::Any, DATA_SERVER_LISTEN_PORT); @@ -59,7 +60,8 @@ void DataServer::readPendingDatagrams() { while (_socket.hasPendingDatagrams()) { receivedPacket.resize(_socket.pendingDatagramSize()); - _socket.readDatagram(receivedPacket.data(), _socket.pendingDatagramSize()); + _socket.readDatagram(receivedPacket.data(), _socket.pendingDatagramSize(), + senderSockAddr.getAddressPointer(), senderSockAddr.getPortPointer()); PacketType requestType = packetTypeForPacket(receivedPacket); @@ -119,11 +121,11 @@ void DataServer::readPendingDatagrams() { if (reply->type == REDIS_REPLY_STATUS && strcmp("OK", reply->str) == 0) { // if redis stored the value successfully reply back with a confirm // which is a reply packet with the sequence number - QByteArray replyPacket = byteArrayWithPopluatedHeader(PacketTypeDataServerConfirm); + QByteArray replyPacket = byteArrayWithPopluatedHeader(PacketTypeDataServerConfirm, _uuid); replyPacket.append(sequenceNumber); - _socket.writeDatagram(replyPacket, + qint64 size = _socket.writeDatagram(replyPacket, senderSockAddr.getAddress(), senderSockAddr.getPort()); } @@ -131,14 +133,17 @@ void DataServer::readPendingDatagrams() { } else { // setup a send packet with the returned data // leverage the packetData sent by overwriting and appending - QByteArray sendPacket = byteArrayWithPopluatedHeader(PacketTypeDataServerSend); + QByteArray sendPacket = byteArrayWithPopluatedHeader(PacketTypeDataServerSend, _uuid); + sendPacket.append(sequenceNumber); - if (!receivedPacket.mid(numReceivedHeaderBytes).startsWith("uuid")) { + if (!receivedPacket.mid(numReceivedHeaderBytes + sizeof(sequenceNumber)).startsWith("uuid")) { const char MULTI_KEY_VALUE_SEPARATOR = '|'; // pull the key that specifies the data the user is putting/getting, null terminate it - QString keyListString(receivedPacket.mid(numReceivedHeaderBytes)); + QString keyListString; + packetStream >> keyListString; + QStringList keyList = keyListString.split(MULTI_KEY_VALUE_SEPARATOR); foreach (const QString& dataKey, keyList) { diff --git a/data-server/src/DataServer.h b/data-server/src/DataServer.h index 097f6a6533..392387f4d8 100644 --- a/data-server/src/DataServer.h +++ b/data-server/src/DataServer.h @@ -10,6 +10,7 @@ #define __hifi__DataServer__ #include +#include #include #include @@ -22,6 +23,7 @@ public: private: QUdpSocket _socket; redisContext* _redis; + QUuid _uuid; private slots: void readPendingDatagrams(); }; diff --git a/libraries/shared/src/DataServerClient.cpp b/libraries/shared/src/DataServerClient.cpp index fd003aa3bb..7ca951ba29 100644 --- a/libraries/shared/src/DataServerClient.cpp +++ b/libraries/shared/src/DataServerClient.cpp @@ -21,7 +21,7 @@ quint8 DataServerClient::_sequenceNumber = 0; const char MULTI_KEY_VALUE_SEPARATOR = '|'; -const char DATA_SERVER_HOSTNAME[] = "data.highfidelity.io"; +const char DATA_SERVER_HOSTNAME[] = "localhost"; const unsigned short DATA_SERVER_PORT = 3282; const HifiSockAddr& DataServerClient::dataServerSockAddr() { From 2f6961f4558df5acd35d099a7846b5527c98f6d4 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 29 Jan 2014 16:06:12 -0800 Subject: [PATCH 2/2] remove debug and wrong data-server address --- data-server/src/DataServer.cpp | 3 +-- libraries/shared/src/DataServerClient.cpp | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/data-server/src/DataServer.cpp b/data-server/src/DataServer.cpp index b174ea293c..91d2b7f496 100644 --- a/data-server/src/DataServer.cpp +++ b/data-server/src/DataServer.cpp @@ -125,8 +125,7 @@ void DataServer::readPendingDatagrams() { replyPacket.append(sequenceNumber); - qint64 size = _socket.writeDatagram(replyPacket, - senderSockAddr.getAddress(), senderSockAddr.getPort()); + _socket.writeDatagram(replyPacket, senderSockAddr.getAddress(), senderSockAddr.getPort()); } freeReplyObject(reply); diff --git a/libraries/shared/src/DataServerClient.cpp b/libraries/shared/src/DataServerClient.cpp index 7ca951ba29..fd003aa3bb 100644 --- a/libraries/shared/src/DataServerClient.cpp +++ b/libraries/shared/src/DataServerClient.cpp @@ -21,7 +21,7 @@ quint8 DataServerClient::_sequenceNumber = 0; const char MULTI_KEY_VALUE_SEPARATOR = '|'; -const char DATA_SERVER_HOSTNAME[] = "localhost"; +const char DATA_SERVER_HOSTNAME[] = "data.highfidelity.io"; const unsigned short DATA_SERVER_PORT = 3282; const HifiSockAddr& DataServerClient::dataServerSockAddr() {