diff --git a/assignment-client/src/audio/AudioMixer.cpp b/assignment-client/src/audio/AudioMixer.cpp index d6e82a3889..8412295bae 100644 --- a/assignment-client/src/audio/AudioMixer.cpp +++ b/assignment-client/src/audio/AudioMixer.cpp @@ -33,6 +33,7 @@ #include #include +#include #include #include @@ -349,11 +350,30 @@ void AudioMixer::readPendingDatagrams() { } } +void AudioMixer::sendStatsPacket() { + static QJsonObject statsObject; + statsObject["trailing_sleep"] = _trailingSleepRatio; + statsObject["min_audability_threshold"] = _minAudibilityThreshold; + + QByteArray statsPacket = byteArrayWithPopulatedHeader(PacketTypeNodeJsonStats); + QDataStream statsPacketStream(&statsPacket, QIODevice::Append); + + statsPacketStream << statsObject.toVariantMap(); + + NodeList* nodeList = NodeList::getInstance(); + nodeList->sendDatagramToDomainServer(statsPacket); +} + void AudioMixer::run() { commonInit(AUDIO_MIXER_LOGGING_TARGET_NAME, NodeType::AudioMixer); NodeList* nodeList = NodeList::getInstance(); + + // send a stats packet every 1 second + QTimer* statsTimer = new QTimer(this); + connect(statsTimer, SIGNAL(timeout()), this, SLOT(sendStatsPacket())); + statsTimer->start(1000); nodeList->addNodeTypeToInterestSet(NodeType::Agent); diff --git a/assignment-client/src/audio/AudioMixer.h b/assignment-client/src/audio/AudioMixer.h index 9d731a5c9c..0f88701303 100644 --- a/assignment-client/src/audio/AudioMixer.h +++ b/assignment-client/src/audio/AudioMixer.h @@ -28,6 +28,8 @@ public slots: void run(); void readPendingDatagrams(); + + void sendStatsPacket(); private: /// adds one buffer to the mix for a listening node void addBufferToMixForListeningNodeWithBuffer(PositionalAudioRingBuffer* bufferToAdd, diff --git a/domain-server/src/DomainServerNodeData.cpp b/domain-server/src/DomainServerNodeData.cpp index 4f943c85db..f1e08e3bc4 100644 --- a/domain-server/src/DomainServerNodeData.cpp +++ b/domain-server/src/DomainServerNodeData.cpp @@ -35,7 +35,6 @@ void DomainServerNodeData::parseJSONStatsPacket(const QByteArray& statsPacket) { _statsJSONObject = mergeJSONStatsFromNewObject(unpackedStatsJSON, _statsJSONObject); } - QJsonObject DomainServerNodeData::mergeJSONStatsFromNewObject(const QJsonObject& newObject, QJsonObject destinationObject) { foreach(const QString& key, newObject.keys()) { if (newObject[key].isObject() && destinationObject.contains(key)) { diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index 2b131ab7ff..7bbe1ce29b 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -193,6 +193,10 @@ qint64 NodeList::writeDatagram(const char* data, qint64 size, const SharedNodePo return writeDatagram(QByteArray(data, size), destinationNode, overridenSockAddr); } +qint64 NodeList::sendDatagramToDomainServer(const QByteArray &datagram) { + return writeDatagram(datagram, _domainInfo.getSockAddr(), _domainInfo.getConnectionSecret()); +} + void NodeList::timePingReply(const QByteArray& packet, const SharedNodePointer& sendingNode) { QDataStream packetStream(packet); packetStream.skipRawData(numBytesForPacketHeader(packet)); diff --git a/libraries/shared/src/NodeList.h b/libraries/shared/src/NodeList.h index d6328a1303..d479e72ee7 100644 --- a/libraries/shared/src/NodeList.h +++ b/libraries/shared/src/NodeList.h @@ -78,6 +78,7 @@ public: const HifiSockAddr& overridenSockAddr = HifiSockAddr()); qint64 writeDatagram(const char* data, qint64 size, const SharedNodePointer& destinationNode, const HifiSockAddr& overridenSockAddr = HifiSockAddr()); + qint64 sendDatagramToDomainServer(const QByteArray& datagram); void(*linkedDataCreateCallback)(Node *);