[Libreoffice-commits] online.git: loleaflet/src

Henry Castro hcastro at collabora.com
Tue Aug 25 21:32:24 PDT 2015


 loleaflet/src/layer/tile/TileLayer.js |   35 +++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

New commits:
commit b7bd11f58af670861b4c28eafac96358487b47d7
Author: Henry Castro <hcastro at collabora.com>
Date:   Wed Aug 26 00:28:11 2015 -0400

    loleaflet: re-establish the connection
    
    Based on a patch by Mihai Varga.

diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index caa3070..c60dd1b 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -91,6 +91,7 @@ L.TileLayer = L.GridLayer.extend({
 			draggable: true
 		});
 		this._emptyTilesCount = 0;
+		this._msgQueue = [];
 	},
 
 	_initDocument: function () {
@@ -521,9 +522,41 @@ L.TileLayer = L.GridLayer.extend({
 		}
 	},
 
+    _onOpenSocket: function () {
+	for (var i = 0; i < this._msgQueue.length; i++) {
+	    this._map.socket.send(this._msgQueue[i].msg);
+	    L.Log.log(this._msgQueue[i].msg, this._msgQueue[i].coords);
+	}
+	this._msgQueue = [];
+    },
+
 	sendMessage: function (msg, coords) {
-		L.Log.log(msg, L.OUTGOING, coords);
+	    var socketState = this._map.socket.readyState;
+	    if (socketState === 2 || socketState === 3) {
+		var socket = this._map._initSocket();
+		if (socket) {
+		    socket.onopen = L.bind(this._onOpenSocket, this);
+		    socket.onmessage = L.bind(this._onMessage, this);
+		    // clear queue
+		    this._msgQueue = [];
+		    // reload interrupted document
+		    this._msgQueue.push({msg:'load url=' + this.options.doc, coords: coords});
+		    // restore current part
+		    this._msgQueue.push({msg:"setclientpart part=" + this._currentPart, coords: coords});
+		    this._msgQueue.push({msg:"setpage page=" + this._currentPart, coords: coords});
+		    // push next message
+		    this._msgQueue.push({msg: msg, coords: coords});
+		}
+	    }
+
+	    if (socketState === 0) {
+		// push message while trying to connect socket again.
+		this._msgQueue.push({msg: msg, coords: coords});
+	    }
+	    else if (socketState === 1) {
 		this._map.socket.send(msg);
+		L.Log.log(msg, L.OUTGOING, coords);
+	    }
 	},
 
 	_tileOnLoad: function (done, tile) {


More information about the Libreoffice-commits mailing list