History

Add log window to the ESS log

Atlante45 committed 9 years ago

Commit 19112181 parent 2962dd611 files · +203 −77Browse files

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

Unified · Split

assignment-client/src/scripts/EntityScriptServer.cpp+71−30
@@ -185,12 +185,20 @@ void EntityScriptServer::handleEntityServerScriptLogPacket(QSharedPointer<Receiv · 184 unmodified lines
185185 if (senderNode->getCanRez() || senderNode->getCanRezTmp()) {
186186 bool enable = false;
187187 message->readPrimitive(&enable);
188− qInfo() << "======== Got log packet:" << enable;
188+
189+ auto senderUUID = senderNode->getUUID();
190+ auto it = _logListeners.find(senderUUID);
189191
190192 if (enable) {
191− _logListeners.insert(senderNode->getUUID());
193+ if (it == std::end(_logListeners)) {
194+ _logListeners.insert(senderUUID);
195+ qInfo() << "Node" << senderUUID << "subscribed to log stream";
196+ }
192197 } else {
193− _logListeners.erase(senderNode->getUUID());
198+ if (it != std::end(_logListeners)) {
199+ _logListeners.erase(it);
200+ qInfo() << "Node" << senderUUID << "unsubscribed from log stream";
201+ }
194202 }
195203 }
196204 }
@@ -290,9 +298,67 @@ void EntityScriptServer::run() { · 93 unmodified lines
290298 connect(tree, &EntityTree::entityServerScriptChanging, this, &EntityScriptServer::entityServerScriptChanging, Qt::QueuedConnection);
291299 }
292300
301+void EntityScriptServer::cleanupOldKilledListeners() {
302+ auto threshold = usecTimestampNow() - 5 * USECS_PER_SECOND;
303+ using ValueType = std::pair<QUuid, quint64>;
304+ auto it = std::remove_if(std::begin(_killedListeners), std::end(_killedListeners), [&](ValueType value) {
305+ return value.second < threshold;
306+ });
307+ _killedListeners.erase(it, std::end(_killedListeners));
308+}
309+
293310 void EntityScriptServer::nodeActivated(SharedNodePointer activatedNode) {
294− if (activatedNode->getType() == NodeType::AudioMixer) {
295− negotiateAudioFormat();
311+ switch (activatedNode->getType()) {
312+ case NodeType::AudioMixer:
313+ negotiateAudioFormat();
314+ break;
315+ case NodeType::Agent: {
316+ auto activatedNodeUUID = activatedNode->getUUID();
317+ using ValueType = std::pair<QUuid, quint64>;
318+ auto it = std::find_if(std::begin(_killedListeners), std::end(_killedListeners), [&](ValueType value) {
319+ return value.first == activatedNodeUUID;
320+ });
321+ if (it != std::end(_killedListeners)) {
322+ _killedListeners.erase(it);
323+ _logListeners.insert(activatedNodeUUID);
324+ }
325+ break;
326+ }
327+ default:
328+ // Do nothing
329+ break;
330+ }
331+}
332+
333+void EntityScriptServer::nodeKilled(SharedNodePointer killedNode) {
334+ switch (killedNode->getType()) {
335+ case NodeType::EntityServer: {
336+ if (!_shuttingDown) {
337+ if (_entitiesScriptEngine) {
338+ _entitiesScriptEngine->unloadAllEntityScripts();
339+ _entitiesScriptEngine->stop();
340+ }
341+
342+ resetEntitiesScriptEngine();
343+
344+ _entityViewer.clear();
345+ }
346+ break;
347+ }
348+ case NodeType::Agent: {
349+ cleanupOldKilledListeners();
350+
351+ auto killedNodeUUID = killedNode->getUUID();
352+ auto it = _logListeners.find(killedNodeUUID);
353+ if (it != std::end(_logListeners)) {
354+ _logListeners.erase(killedNodeUUID);
355+ _killedListeners.emplace_back(killedNodeUUID, usecTimestampNow());
356+ }
357+ break;
358+ }
359+ default:
360+ // Do nothing
361+ break;
296362 }
297363 }
298364
@@ -433,31 +499,6 @@ void EntityScriptServer::checkAndCallPreload(const EntityItemID& entityID, const · 134 unmodified lines
433499 }
434500 }
435501
436−void EntityScriptServer::nodeKilled(SharedNodePointer killedNode) {
437− switch (killedNode->getType()) {
438− case NodeType::EntityServer: {
439− if (!_shuttingDown) {
440− if (_entitiesScriptEngine) {
441− _entitiesScriptEngine->unloadAllEntityScripts();
442− _entitiesScriptEngine->stop();
443− }
444−
445− resetEntitiesScriptEngine();
446−
447− _entityViewer.clear();
448− }
449− break;
450− }
451− case NodeType::Agent: {
452− _logListeners.erase(killedNode->getUUID());
453− break;
454− }
455− default:
456− // Do nothing
457− break;
458− }
459−}
460−
461502 void EntityScriptServer::sendStatsPacket() {
462503
463504 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t