'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _events = require('events');
var _promise = require('../deps/promise');
var _promise2 = _interopRequireDefault(_promise);
var _inherits = require('inherits');
var _inherits2 = _interopRequireDefault(_inherits);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// We create a basic promise so the caller can cancel the replication possibly
// before we have actually started listening to changes etc
(0, _inherits2.default)(Replication, _events.EventEmitter);
function Replication() {
_events.EventEmitter.call(this);
this.cancelled = false;
this.state = 'pending';
var self = this;
var promise = new _promise2.default(function (fulfill, reject) {
self.once('complete', fulfill);
self.once('error', reject);
});
self.then = function (resolve, reject) {
return promise.then(resolve, reject);
};
self.catch = function (reject) {
return promise.catch(reject);
};
// As we allow error handling via "error" event as well,
// put a stub in here so that rejecting never throws UnhandledError.
self.catch(function () {});
}
Replication.prototype.cancel = function () {
this.cancelled = true;
this.state = 'cancelled';
this.emit('cancel');
};
Replication.prototype.ready = function (src, target) {
var self = this;
if (self._readyCalled) {
return;
}
self._readyCalled = true;
function onDestroy() {
self.cancel();
}
src.once('destroyed', onDestroy);
target.once('destroyed', onDestroy);
function cleanup() {
src.removeListener('destroyed', onDestroy);
target.removeListener('destroyed', onDestroy);
}
self.once('complete', cleanup);
};
exports.default = Replication;
module.exports = exports['default']; |