Merge pull request +6675 from c9/fix-vfs

Improve VFS connect logic robustness
pull/51/head
Lennart Kats 2015-03-23 14:23:21 +01:00
rodzic 504f68ac0a
commit 8f04053d74
2 zmienionych plików z 33 dodań i 22 usunięć

Wyświetl plik

@ -1,7 +1,7 @@
define(function(require, exports, module) {
"use strict";
main.consumes = ["Plugin", "auth", "http", "api"];
main.consumes = ["Plugin", "auth", "http", "api", "error_handler"];
main.provides = ["vfs.endpoint"];
return main;
@ -10,6 +10,7 @@ define(function(require, exports, module) {
var auth = imports.auth;
var http = imports.http;
var api = imports.api;
var errorHandler = imports.error_handler;
/***** Initialization *****/
@ -43,29 +44,32 @@ define(function(require, exports, module) {
var servers;
var pendingServerReqs = [];
if (options.getServers)
options.getServers(initDefaultServers);
else
initDefaultServers();
initDefaultServers();
options.pid = options.pid || 1;
/***** Methods *****/
function initDefaultServers(baseURI) {
options.getServers = undefined;
var loc = require("url").parse(baseURI || document.baseURI || window.location.href);
var defaultServers = [{
url: loc.protocol + "//" + loc.hostname + (loc.port ? ":" + loc.port : "") + "/vfs",
region: "default"
}];
servers = (urlServers || options.servers || defaultServers).map(function(server) {
server.url = server.url.replace(/\/*$/, "");
return server;
});
pendingServerReqs.forEach(function(cb) {
cb(null, servers);
});
if (options.getServers)
return options.getServers(init);
init();
function init() {
options.getServers = undefined;
var loc = require("url").parse(baseURI || document.baseURI || window.location.href);
var defaultServers = [{
url: loc.protocol + "//" + loc.hostname + (loc.port ? ":" + loc.port : "") + "/vfs",
region: "default"
}];
servers = (urlServers || options.servers || defaultServers).map(function(server) {
server.url = server.url.replace(/\/*$/, "");
return server;
});
pendingServerReqs.forEach(function(cb) {
cb(null, servers);
});
}
}
function getServers(callback) {
@ -90,10 +94,14 @@ define(function(require, exports, module) {
}
function getVfsEndpoint(version, callback) {
getServers(function(err, servers) {
if (err) return callback(err);
getServers(function(err, _servers) {
if (err) {
errorHandler.reportError(err);
initDefaultServers();
_servers = servers;
}
getVfsUrl(version, servers, function(err, vfsid, url, region) {
getVfsUrl(version, _servers, function(err, vfsid, url, region) {
if (err) return callback(err);
callback(null, {

Wyświetl plik

@ -7,7 +7,7 @@
define(function(require, exports, module) {
"use strict";
main.consumes = ["Plugin", "auth", "vfs.endpoint", "dialog.error", "dialog.alert"];
main.consumes = ["Plugin", "auth", "vfs.endpoint", "dialog.error", "dialog.alert", "error_handler"];
main.provides = ["vfs"];
return main;
@ -33,6 +33,7 @@ define(function(require, exports, module) {
var showError = errorDialog.show;
var hideError = errorDialog.hide;
var showAlert = imports["dialog.alert"].show;
var errorHandler = imports.error_handler;
var eio = require("engine.io");
var Consumer = require("vfs-socket/consumer").Consumer;
@ -123,6 +124,7 @@ define(function(require, exports, module) {
});
function disconnect() {
pingUrl = null;
reconnect(function(err) {
if (err && err.fatal)
return;
@ -275,6 +277,7 @@ define(function(require, exports, module) {
consumer.connect(transport, function(err, _vfs) {
// TODO
if (err) {
errorHandler.reportError(new Error("Error connecting to VFS", { err: err }));
console.error("error connecting to VFS", err);
return;
}