History

Merge branch 'protocol_changes' into sound

HifiExperiments committed 2 years ago

Commit 0e4e8d22 parents fa24022 54d70a5381 files · +12019 −6131Browse files

Showing the changes to assignment-client/src/scripts/EntityScriptServer.cpp (1 of 381 files). Show all

Unified · Split

assignment-client/src/scripts/EntityScriptServer.cpp+38−12
@@ -44,16 +44,8 @@ · 43 unmodified lines
4444 using Mutex = std::mutex;
4545 using Lock = std::lock_guard<Mutex>;
4646
47−static std::mutex logBufferMutex;
48−static std::string logBuffer;
49−
5047 void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message) {
5148 auto logMessage = LogHandler::getInstance().printMessage((LogMsgType) type, context, message);
52−
53− if (!logMessage.isEmpty()) {
54− Lock lock(logBufferMutex);
55− logBuffer.append(logMessage.toStdString() + '\n');
56− }
5749 }
5850
5951 int EntityScriptServer::_entitiesScriptEngineCount = 0;
@@ -217,10 +209,10 @@ void EntityScriptServer::handleEntityServerScriptLogPacket(QSharedPointer<Receiv · 157 unmodified lines
217209 }
218210
219211 void EntityScriptServer::pushLogs() {
220− std::string buffer;
212+ QJsonArray buffer;
221213 {
222− Lock lock(logBufferMutex);
223− std::swap(logBuffer, buffer);
214+ Lock lock(_logBufferMutex);
215+ std::swap(_logBuffer, buffer);
224216 }
225217
226218 if (buffer.empty()) {
@@ -231,16 +223,27 @@ void EntityScriptServer::pushLogs() { · 4 unmodified lines
231223 }
232224
233225 auto nodeList = DependencyManager::get<NodeList>();
226+ QJsonDocument document;
227+ document.setArray(buffer);
228+ QString data(document.toJson());
229+ std::string string = data.toStdString();
230+ auto cstring = string.c_str();
234231 for (auto uuid : _logListeners) {
235232 auto node = nodeList->nodeWithUUID(uuid);
236233 if (node && node->getActiveSocket()) {
237234 auto packet = NLPacketList::create(PacketType::EntityServerScriptLog, QByteArray(), true, true);
238− packet->write(buffer.data(), buffer.size());
235+ packet->write(cstring, strlen(cstring));
239236 nodeList->sendPacketList(std::move(packet), *node);
240237 }
241238 }
242239 }
243240
241+void EntityScriptServer::addLogEntry(const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID, ScriptMessage::Severity severity) {
242+ ScriptMessage entry(message, fileName, lineNumber, entityID, ScriptMessage::ScriptType::TYPE_ENTITY_SCRIPT, severity);
243+ Lock lock(_logBufferMutex);
244+ _logBuffer.append(entry.toJson());
245+}
246+
244247 void EntityScriptServer::handleEntityScriptCallMethodPacket(QSharedPointer<ReceivedMessage> receivedMessage, SharedNodePointer senderNode) {
245248
246249 if (_entitiesScriptManager && _entityViewer.getTree() && !_shuttingDown) {
@@ -470,6 +473,29 @@ void EntityScriptServer::resetEntitiesScriptEngine() { · 223 unmodified lines
470473 connect(newManager.get(), &ScriptManager::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage);
471474 connect(newManager.get(), &ScriptManager::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage);
472475
476+ // Make script engine messages available through ScriptDiscoveryService
477+ connect(newManager.get(), &ScriptManager::infoEntityMessage, scriptEngines, &ScriptEngines::infoEntityMessage);
478+ connect(newManager.get(), &ScriptManager::printedEntityMessage, scriptEngines, &ScriptEngines::printedEntityMessage);
479+ connect(newManager.get(), &ScriptManager::errorEntityMessage, scriptEngines, &ScriptEngines::errorEntityMessage);
480+ connect(newManager.get(), &ScriptManager::warningEntityMessage, scriptEngines, &ScriptEngines::warningEntityMessage);
481+
482+ connect(newManager.get(), &ScriptManager::infoEntityMessage,
483+ [this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
484+ addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_INFO);
485+ });
486+ connect(newManager.get(), &ScriptManager::printedEntityMessage,
487+ [this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
488+ addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_PRINT);
489+ });
490+ connect(newManager.get(), &ScriptManager::errorEntityMessage,
491+ [this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
492+ addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_ERROR);
493+ });
494+ connect(newManager.get(), &ScriptManager::warningEntityMessage,
495+ [this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
496+ addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_WARNING);
497+ });
498+
473499 connect(newManager.get(), &ScriptManager::update, this, [this] {
474500 _entityViewer.queryOctree();
475501 _entityViewer.getTree()->preUpdate();