Merge branch 'master' of https://github.com/highfidelity/hifi into network-timeout

This commit is contained in:
Stephen Birarda 2014-11-03 15:16:21 -08:00
commit 09ce4abaee
2 changed files with 22 additions and 5 deletions

View file

@ -388,7 +388,7 @@ void DomainServer::setupAutomaticNetworking() {
const int DOMAIN_SERVER_DATA_WEB_HEARTBEAT_MSECS = 15 * 1000; const int DOMAIN_SERVER_DATA_WEB_HEARTBEAT_MSECS = 15 * 1000;
QTimer* dataHeartbeatTimer = new QTimer(this); QTimer* dataHeartbeatTimer = new QTimer(this);
connect(dataHeartbeatTimer, &QTimer::timeout, this, &DomainServer::sendHeartbeatToDataServer); connect(dataHeartbeatTimer, SIGNAL(timeout()), this, SLOT(sendHeartbeatToDataServer()));
dataHeartbeatTimer->start(DOMAIN_SERVER_DATA_WEB_HEARTBEAT_MSECS); dataHeartbeatTimer->start(DOMAIN_SERVER_DATA_WEB_HEARTBEAT_MSECS);
} }
@ -1091,10 +1091,10 @@ QJsonObject jsonForDomainSocketUpdate(const HifiSockAddr& socket) {
const QString DOMAIN_UPDATE_AUTOMATIC_NETWORKING_KEY = "automatic_networking"; const QString DOMAIN_UPDATE_AUTOMATIC_NETWORKING_KEY = "automatic_networking";
void DomainServer::performIPAddressUpdate(const HifiSockAddr& newPublicSockAddr) { void DomainServer::performIPAddressUpdate(const HifiSockAddr& newPublicSockAddr) {
updateDomainInDataServer(newPublicSockAddr.getAddress().toString()); sendHeartbeatToDataServer(newPublicSockAddr.getAddress().toString());
} }
void DomainServer::updateDomainInDataServer(const QString& networkAddress) { void DomainServer::sendHeartbeatToDataServer(const QString& networkAddress) {
const QString DOMAIN_UPDATE = "/api/v1/domains/%1"; const QString DOMAIN_UPDATE = "/api/v1/domains/%1";
const QUuid& domainID = LimitedNodeList::getInstance()->getSessionUUID(); const QUuid& domainID = LimitedNodeList::getInstance()->getSessionUUID();
@ -1109,8 +1109,25 @@ void DomainServer::updateDomainInDataServer(const QString& networkAddress) {
domainObject[AUTOMATIC_NETWORKING_KEY] = _automaticNetworkingSetting; domainObject[AUTOMATIC_NETWORKING_KEY] = _automaticNetworkingSetting;
// add the number of currently connected agent users
int numConnectedAuthedUsers = 0;
foreach(const SharedNodePointer& node, LimitedNodeList::getInstance()->getNodeHash()) {
if (node->getLinkedData() && !static_cast<DomainServerNodeData*>(node->getLinkedData())->getUsername().isEmpty()) {
++numConnectedAuthedUsers;
}
}
const QString DOMAIN_HEARTBEAT_KEY = "heartbeat";
const QString HEARTBEAT_NUM_USERS_KEY = "num_users";
QJsonObject heartbeatObject;
heartbeatObject[HEARTBEAT_NUM_USERS_KEY] = numConnectedAuthedUsers;
domainObject[DOMAIN_HEARTBEAT_KEY] = heartbeatObject;
QString domainUpdateJSON = QString("{\"domain\": %1 }").arg(QString(QJsonDocument(domainObject).toJson())); QString domainUpdateJSON = QString("{\"domain\": %1 }").arg(QString(QJsonDocument(domainObject).toJson()));
qDebug() << domainUpdateJSON;
AccountManager::getInstance().authenticatedRequest(DOMAIN_UPDATE.arg(uuidStringWithoutCurlyBraces(domainID)), AccountManager::getInstance().authenticatedRequest(DOMAIN_UPDATE.arg(uuidStringWithoutCurlyBraces(domainID)),
QNetworkAccessManager::PutOperation, QNetworkAccessManager::PutOperation,
JSONCallbackParameters(), JSONCallbackParameters(),

View file

@ -66,7 +66,7 @@ private slots:
void requestCurrentPublicSocketViaSTUN(); void requestCurrentPublicSocketViaSTUN();
void performIPAddressUpdate(const HifiSockAddr& newPublicSockAddr); void performIPAddressUpdate(const HifiSockAddr& newPublicSockAddr);
void performICEUpdates(); void performICEUpdates();
void sendHeartbeatToDataServer() { updateDomainInDataServer(); } void sendHeartbeatToDataServer() { sendHeartbeatToDataServer(QString()); }
void sendHeartbeatToIceServer(); void sendHeartbeatToIceServer();
void sendICEPingPackets(); void sendICEPingPackets();
private: private:
@ -77,7 +77,7 @@ private:
bool optionallySetupAssignmentPayment(); bool optionallySetupAssignmentPayment();
void setupAutomaticNetworking(); void setupAutomaticNetworking();
void updateDomainInDataServer(const QString& networkAddress = QString()); void sendHeartbeatToDataServer(const QString& networkAddress);
void processICEPingReply(const QByteArray& packet, const HifiSockAddr& senderSockAddr); void processICEPingReply(const QByteArray& packet, const HifiSockAddr& senderSockAddr);
void processICEHeartbeatResponse(const QByteArray& packet); void processICEHeartbeatResponse(const QByteArray& packet);