More work on desktop multiplexor.

Ylian Saint-Hilaire committed Apr 27, 2020 at 17:54 UTC 87992cbcab645427c45f9ddbfaf51028f2f62ff8
1 file changed +11 -10
meshdesktopmultiplex.js
+11 -10
@@ -57,7 +57,7 @@ MNG_ERROR = 65,
57 MNG_ENCAPSULATE_AGENT_COMMAND = 70
58 */
59
60 -function CreateDesktopDecoder(parent, domain, id, func) {
60 +function CreateDesktopMultiplexor(parent, domain, id, func) {
61 var obj = {};
62 obj.id = id;
63 obj.parent = parent;
@@ -90,7 +90,7 @@ function CreateDesktopDecoder(parent, domain, id, func) {
90 // Add an agent or viewer
91 obj.addPeer = function (peer) {
92 if (peer.req.query.browser) {
93 - //console.log('addPeer-viewer');
93 + //console.log('addPeer-viewer', obj.id);
94
95 // Setup the viewer
96 if (obj.viewers.indexOf(peer) >= 0) return true;
@@ -106,9 +106,9 @@ function CreateDesktopDecoder(parent, domain, id, func) {
106 peer.paused = false;
107
108 // Indicated we are connected
109 - obj.sendToViewer(peer, 'c');
109 + obj.sendToViewer(peer, obj.recordingFile ? 'cr' : 'c');
110 } else {
111 - //console.log('addPeer-agent');
111 + //console.log('addPeer-agent', obj.id);
112 if (obj.agent != null) return false;
113
114 // Setup the agent
@@ -118,7 +118,7 @@ function CreateDesktopDecoder(parent, domain, id, func) {
118 peer.paused = false;
119
120 // Indicated we are connected and send connection options and protocol if needed
121 - obj.sendToAgent('c');
121 + obj.sendToAgent(obj.recordingFile?'cr':'c');
122 if (obj.viewerConnected == true) {
123 if (obj.protocolOptions != null) { obj.sendToAgent(JSON.stringify(obj.protocolOptions)); } // Send connection options
124 obj.sendToAgent('2'); // Send remote desktop connect
@@ -131,7 +131,7 @@ function CreateDesktopDecoder(parent, domain, id, func) {
131 // Return true if this multiplexor is no longer needed.
132 obj.removePeer = function (peer) {
133 if (peer == obj.agent) {
134 - //console.log('removePeer-agent');
134 + //console.log('removePeer-agent', obj.id);
135 // Clean up the agent
136 obj.agent = null;
137
@@ -140,7 +140,7 @@ function CreateDesktopDecoder(parent, domain, id, func) {
140 dispose();
141 return true;
142 } else {
143 - //console.log('removePeer-viewer');
143 + //console.log('removePeer-viewer', obj.id);
144 // Remove a viewer
145 var i = obj.viewers.indexOf(peer);
146 if (i == -1) return false;
@@ -171,6 +171,7 @@ function CreateDesktopDecoder(parent, domain, id, func) {
171
172 // Clean up ourselves
173 function dispose() {
174 + //console.log('dispose', obj.id);
175 delete obj.viewers;
176 delete obj.imagesCounters;
177 delete obj.images;
@@ -253,10 +254,10 @@ function CreateDesktopDecoder(parent, domain, id, func) {
254 } else {
255 if (viewer.dataPtr != null) {
256 // Send the next image
256 - if ((viewer.lastImageNumberSent != null) && ((viewer.lastImageNumberSent + 1) != (viewer.dataPtr))) { console.log('SVIEW-S1', viewer.lastImageNumberSent, viewer.dataPtr); } // DEBUG
257 + //if ((viewer.lastImageNumberSent != null) && ((viewer.lastImageNumberSent + 1) != (viewer.dataPtr))) { console.log('SVIEW-S1', viewer.lastImageNumberSent, viewer.dataPtr); } // DEBUG
258 var image = obj.images[viewer.dataPtr];
259 viewer.lastImageNumberSent = viewer.dataPtr;
259 - if ((image.next != null) && ((viewer.dataPtr + 1) != image.next)) { console.log('SVIEW-S2', viewer.dataPtr, image.next); } // DEBUG
260 + //if ((image.next != null) && ((viewer.dataPtr + 1) != image.next)) { console.log('SVIEW-S2', viewer.dataPtr, image.next); } // DEBUG
261 viewer.dataPtr = image.next;
262 viewer.ws.send(image.data, function () { sendViewerNext(viewer); });
263
@@ -745,7 +746,7 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
746 // Create if needed and add this peer to the desktop multiplexor
747 obj.deskDecoder = parent.desktoprelays[obj.id];
748 if (obj.deskDecoder == null) {
748 - CreateDesktopDecoder(parent, domain, obj.id, function (deskDecoder) {
749 + CreateDesktopMultiplexor(parent, domain, obj.id, function (deskDecoder) {
750 obj.deskDecoder = deskDecoder;
751 parent.desktoprelays[obj.id] = obj.deskDecoder;
752 obj.deskDecoder.addPeer(obj);