Make Xo.connect() private.
This commit is contained in:
parent
a8ca6b6fcb
commit
807da8f696
@ -209,45 +209,6 @@ var objectsOptions = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// High level interface to Xo.
|
|
||||||
//
|
|
||||||
// Handle auto-reconnect, sign in & objects cache.
|
|
||||||
function Xo(opts) {
|
|
||||||
var self = this;
|
|
||||||
|
|
||||||
this._api = new Api(opts.url);
|
|
||||||
this._auth = opts.auth;
|
|
||||||
this._backOff = fibonacci(1e3);
|
|
||||||
this.objects = createCollection(objectsOptions);
|
|
||||||
this.status = 'disconnected';
|
|
||||||
this.user = null;
|
|
||||||
|
|
||||||
// Promise representing the connection status.
|
|
||||||
this._connection = null;
|
|
||||||
|
|
||||||
self._api.on('disconnected', function () {
|
|
||||||
self._connection = null;
|
|
||||||
self.status = 'disconnected';
|
|
||||||
|
|
||||||
// Automatically reconnect.
|
|
||||||
self.connect();
|
|
||||||
});
|
|
||||||
|
|
||||||
self._api.on('notification', function (notification) {
|
|
||||||
if (notification.method !== 'all') {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var method = (
|
|
||||||
notification.params.type === 'exit' ?
|
|
||||||
'unset' :
|
|
||||||
'set'
|
|
||||||
) + 'Multiple';
|
|
||||||
|
|
||||||
self.objects[method](notification.params.items);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function tryConnect() {
|
function tryConnect() {
|
||||||
/* jshint validthis: true */
|
/* jshint validthis: true */
|
||||||
|
|
||||||
@ -283,7 +244,9 @@ function onFailedConnection() {
|
|||||||
this.status = 'disconnected';
|
this.status = 'disconnected';
|
||||||
}
|
}
|
||||||
|
|
||||||
Xo.prototype.connect = function () {
|
function connect() {
|
||||||
|
/* jshint validthis: true */
|
||||||
|
|
||||||
if (this._connection) {
|
if (this._connection) {
|
||||||
return this._connection;
|
return this._connection;
|
||||||
}
|
}
|
||||||
@ -293,13 +256,53 @@ Xo.prototype.connect = function () {
|
|||||||
onSuccessfulConnection, onFailedConnection
|
onSuccessfulConnection, onFailedConnection
|
||||||
);
|
);
|
||||||
return this._connection;
|
return this._connection;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
// High level interface to Xo.
|
||||||
|
//
|
||||||
|
// Handle auto-reconnect, sign in & objects cache.
|
||||||
|
function Xo(opts) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
this._api = new Api(opts.url);
|
||||||
|
this._auth = opts.auth;
|
||||||
|
this._backOff = fibonacci(1e3);
|
||||||
|
this.objects = createCollection(objectsOptions);
|
||||||
|
this.status = 'disconnected';
|
||||||
|
this.user = null;
|
||||||
|
|
||||||
|
// Promise representing the connection status.
|
||||||
|
this._connection = null;
|
||||||
|
|
||||||
|
self._api.on('disconnected', function () {
|
||||||
|
// Automatically reconnect.
|
||||||
|
self._connection = null;
|
||||||
|
connect.call(this);
|
||||||
|
});
|
||||||
|
|
||||||
|
self._api.on('notification', function (notification) {
|
||||||
|
if (notification.method !== 'all') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var method = (
|
||||||
|
notification.params.type === 'exit' ?
|
||||||
|
'unset' :
|
||||||
|
'set'
|
||||||
|
) + 'Multiple';
|
||||||
|
|
||||||
|
self.objects[method](notification.params.items);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Bootstrap the connection.
|
||||||
|
connect.call(this);
|
||||||
|
}
|
||||||
|
|
||||||
Xo.prototype.call = function (method, params) {
|
Xo.prototype.call = function (method, params) {
|
||||||
// TODO: prevent session.*() from being because it may interfere
|
// TODO: prevent session.*() from being because it may interfere
|
||||||
// with this class session management.
|
// with this class session management.
|
||||||
|
|
||||||
return this.connect().then(function () {
|
return connect.call(this).then(function () {
|
||||||
var self = this;
|
var self = this;
|
||||||
return this._api.call(method, params).catch(ConnectionLost, function () {
|
return this._api.call(method, params).catch(ConnectionLost, function () {
|
||||||
// Retry automatically.
|
// Retry automatically.
|
||||||
|
Loading…
Reference in New Issue
Block a user