diff --git a/node_modules/vfs-socket/worker.js b/node_modules/vfs-socket/worker.js index 0fc07f34..bf1ad040 100644 --- a/node_modules/vfs-socket/worker.js +++ b/node_modules/vfs-socket/worker.js @@ -322,10 +322,30 @@ function Worker(vfs) { delete watchers[id]; watcher.close(); } + + /** + * Add additional timing info to any "ping" call. + */ + function wrapPingCall(name, fnName, args) { + if (name === "ping" && fnName === "ping" && args[0] === "serverTime" && args.length === 2) { + var start = Date.now(); + var cb = args[1]; + + args[1] = function(err, payload) { + if (err) return cb(err); + cb(null, { + payload: payload, + serverTime: Date.now() - start + }); + }; + } + } function call(name, fnName, args) { var api = apis[name]; if (!api) return; + + wrapPingCall(name, fnName, args); // If the last arg is a function, assume it's a callback and process it. if (typeof args[args.length - 1] == "function") { diff --git a/package.json b/package.json index 27aea251..a2a73b1d 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "c9.ide.language.javascript.tern": "#a65ad88dd9", "c9.ide.language.javascript.infer": "#ebb2daf81a", "c9.ide.language.jsonalyzer": "#5262f6b4b9", - "c9.ide.collab": "#51b8b72e0f", + "c9.ide.collab": "#7bcd5ef65f", "c9.ide.local": "#2bfd7ff051", "c9.ide.find": "#989c06e6a7", "c9.ide.find.infiles": "#28b3cfcb47", diff --git a/plugins/c9.vfs.client/ping-service.js b/plugins/c9.vfs.client/ping-service.js index 52fb886a..fb9a5210 100644 --- a/plugins/c9.vfs.client/ping-service.js +++ b/plugins/c9.vfs.client/ping-service.js @@ -1,6 +1,7 @@ module.exports = function(vfs, options, register) { register(null, { ping: function (payload, callback) { + // We simply return the payload, while vfs-socket adds a time stamp callback(null, payload); } }); diff --git a/plugins/c9.vfs.client/vfs.ping.js b/plugins/c9.vfs.client/vfs.ping.js index 8128bfeb..13ae4c44 100644 --- a/plugins/c9.vfs.client/vfs.ping.js +++ b/plugins/c9.vfs.client/vfs.ping.js @@ -60,11 +60,13 @@ define(function(require, exports, module) { if (!api) return callback(new Error("Client is offline")); var start = Date.now(); - api.ping("ping", function(err) { - var took = Date.now() - start; + api.ping("serverTime", function(err, response) { if (err) return callback(err); - callback(null, took); + callback(null, { + serverTime: response.serverTime, + total: Date.now() - start + }); }); }