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
44using Mutex = std::mutex;44using Mutex = std::mutex;
45using Lock = std::lock_guard<Mutex>;45using Lock = std::lock_guard<Mutex>;
46 46
47static std::mutex logBufferMutex;
48static std::string logBuffer;
49
50void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message) {47void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message) {
51 auto logMessage = LogHandler::getInstance().printMessage((LogMsgType) type, context, message);48 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 }
57}49}
58 50
59int EntityScriptServer::_entitiesScriptEngineCount = 0;51int EntityScriptServer::_entitiesScriptEngineCount = 0;
@@ -217,10 +209,10 @@ void EntityScriptServer::handleEntityServerScriptLogPacket(QSharedPointer<Receiv · 157 unmodified lines
217}209}
218 210
219void EntityScriptServer::pushLogs() {211void EntityScriptServer::pushLogs() {
220 std::string buffer;212 QJsonArray buffer;
221 {213 {
222 Lock lock(logBufferMutex);214 Lock lock(_logBufferMutex);
223 std::swap(logBuffer, buffer);215 std::swap(_logBuffer, buffer);
224 }216 }
225 217
226 if (buffer.empty()) {218 if (buffer.empty()) {
@@ -231,16 +223,27 @@ void EntityScriptServer::pushLogs() { · 4 unmodified lines
231 }223 }
232 224
233 auto nodeList = DependencyManager::get<NodeList>();225 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();
234 for (auto uuid : _logListeners) {231 for (auto uuid : _logListeners) {
235 auto node = nodeList->nodeWithUUID(uuid);232 auto node = nodeList->nodeWithUUID(uuid);
236 if (node && node->getActiveSocket()) {233 if (node && node->getActiveSocket()) {
237 auto packet = NLPacketList::create(PacketType::EntityServerScriptLog, QByteArray(), true, true);234 auto packet = NLPacketList::create(PacketType::EntityServerScriptLog, QByteArray(), true, true);
238 packet->write(buffer.data(), buffer.size());235 packet->write(cstring, strlen(cstring));
239 nodeList->sendPacketList(std::move(packet), *node);236 nodeList->sendPacketList(std::move(packet), *node);
240 }237 }
241 }238 }
242}239}
243 240
241void 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
244void EntityScriptServer::handleEntityScriptCallMethodPacket(QSharedPointer<ReceivedMessage> receivedMessage, SharedNodePointer senderNode) {247void EntityScriptServer::handleEntityScriptCallMethodPacket(QSharedPointer<ReceivedMessage> receivedMessage, SharedNodePointer senderNode) {
245 248
246 if (_entitiesScriptManager && _entityViewer.getTree() && !_shuttingDown) {249 if (_entitiesScriptManager && _entityViewer.getTree() && !_shuttingDown) {
@@ -470,6 +473,29 @@ void EntityScriptServer::resetEntitiesScriptEngine() { · 223 unmodified lines
470 connect(newManager.get(), &ScriptManager::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage);473 connect(newManager.get(), &ScriptManager::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage);
471 connect(newManager.get(), &ScriptManager::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage);474 connect(newManager.get(), &ScriptManager::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage);
472 475
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
473 connect(newManager.get(), &ScriptManager::update, this, [this] {499 connect(newManager.get(), &ScriptManager::update, this, [this] {
474 _entityViewer.queryOctree();500 _entityViewer.queryOctree();
475 _entityViewer.getTree()->preUpdate();501 _entityViewer.getTree()->preUpdate();