concern
Version:
A library for seperating your application logic into concerns.
89 lines (63 loc) • 6.9 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _bluebird = require('bluebird');
var _bluebird2 = _interopRequireDefault(_bluebird);
var _RefState2 = require('./RefState');
var _RefState3 = _interopRequireDefault(_RefState2);
var _Signal = require('./Signal');
var _Signal2 = _interopRequireDefault(_Signal);
var _PausedState = require('./PausedState');
var _PausedState2 = _interopRequireDefault(_PausedState);
var _Ticker = require('./Ticker');
var _Ticker2 = _interopRequireDefault(_Ticker);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
/**
* PausingState
*/
var PausingState = function (_RefState) {
_inherits(PausingState, _RefState);
function PausingState() {
_classCallCheck(this, PausingState);
return _possibleConstructorReturn(this, (PausingState.__proto__ || Object.getPrototypeOf(PausingState)).apply(this, arguments));
}
_createClass(PausingState, [{
key: 'signal',
value: function signal() {
return _Signal2.default.Pausing;
}
}, {
key: 'sync',
value: function sync() {
var _this2 = this;
this._countdown = new _Ticker2.default(this._context.children().length, function (message, from) {
return message === _Signal2.default.Paused && _this2._context.isChild(from);
}, function (message, from) {
return _this2._context.system().deadLetters().tell(message, from);
}, function () {
return _this2._context.dispatcher().execute(function (concern) {
return concern.onPause();
}, function () {
return _this2._context.self().setState(new _PausedState2.default(_this2._context));
});
});
this._context.children().forEach(function (child) {
return child.self().tell(_Signal2.default.Pause, _this2._context.self());
});
}
}, {
key: 'tell',
value: function tell(message, from) {
this._countdown.tick(message, from);
}
}]);
return PausingState;
}(_RefState3.default);
exports.default = PausingState;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZS9QYXVzaW5nU3RhdGUuanMiXSwibmFtZXMiOlsiUGF1c2luZ1N0YXRlIiwiUGF1c2luZyIsIl9jb3VudGRvd24iLCJfY29udGV4dCIsImNoaWxkcmVuIiwibGVuZ3RoIiwibWVzc2FnZSIsImZyb20iLCJQYXVzZWQiLCJpc0NoaWxkIiwic3lzdGVtIiwiZGVhZExldHRlcnMiLCJ0ZWxsIiwiZGlzcGF0Y2hlciIsImV4ZWN1dGUiLCJjb25jZXJuIiwib25QYXVzZSIsInNlbGYiLCJzZXRTdGF0ZSIsImZvckVhY2giLCJjaGlsZCIsIlBhdXNlIiwidGljayJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7QUFFQTs7O0lBR01BLFk7Ozs7Ozs7Ozs7O2lDQUVPOztBQUVMLG1CQUFPLGlCQUFPQyxPQUFkO0FBRUg7OzsrQkFFTTtBQUFBOztBQUVILGlCQUFLQyxVQUFMLEdBQWtCLHFCQUNkLEtBQUtDLFFBQUwsQ0FBY0MsUUFBZCxHQUF5QkMsTUFEWCxFQUVkLFVBQUNDLE9BQUQsRUFBVUMsSUFBVjtBQUFBLHVCQUFvQkQsWUFBWSxpQkFBT0UsTUFBcEIsSUFBZ0MsT0FBS0wsUUFBTCxDQUFjTSxPQUFkLENBQXNCRixJQUF0QixDQUFuRDtBQUFBLGFBRmMsRUFHZCxVQUFDRCxPQUFELEVBQVVDLElBQVY7QUFBQSx1QkFBbUIsT0FBS0osUUFBTCxDQUFjTyxNQUFkLEdBQXVCQyxXQUF2QixHQUFxQ0MsSUFBckMsQ0FBMENOLE9BQTFDLEVBQW1EQyxJQUFuRCxDQUFuQjtBQUFBLGFBSGMsRUFJZDtBQUFBLHVCQUFNLE9BQUtKLFFBQUwsQ0FBY1UsVUFBZCxHQUEyQkMsT0FBM0IsQ0FDRjtBQUFBLDJCQUFXQyxRQUFRQyxPQUFSLEVBQVg7QUFBQSxpQkFERSxFQUVGO0FBQUEsMkJBQU0sT0FBS2IsUUFBTCxDQUFjYyxJQUFkLEdBQXFCQyxRQUFyQixDQUE4QiwwQkFBZ0IsT0FBS2YsUUFBckIsQ0FBOUIsQ0FBTjtBQUFBLGlCQUZFLENBQU47QUFBQSxhQUpjLENBQWxCOztBQVFBLGlCQUFLQSxRQUFMLENBQWNDLFFBQWQsR0FDQWUsT0FEQSxDQUNRO0FBQUEsdUJBQ0pDLE1BQU1ILElBQU4sR0FBYUwsSUFBYixDQUFrQixpQkFBT1MsS0FBekIsRUFBZ0MsT0FBS2xCLFFBQUwsQ0FBY2MsSUFBZCxFQUFoQyxDQURJO0FBQUEsYUFEUjtBQUlIOzs7NkJBRUlYLE8sRUFBU0MsSSxFQUFNOztBQUVoQixpQkFBS0wsVUFBTCxDQUFnQm9CLElBQWhCLENBQXFCaEIsT0FBckIsRUFBOEJDLElBQTlCO0FBRUg7Ozs7OztrQkFJVVAsWSIsImZpbGUiOiJQYXVzaW5nU3RhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvbWlzZSBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgUmVmU3RhdGUgZnJvbSAnLi9SZWZTdGF0ZSc7XG5pbXBvcnQgU2lnbmFsIGZyb20gJy4vU2lnbmFsJztcbmltcG9ydCBQYXVzZWRTdGF0ZSBmcm9tICcuL1BhdXNlZFN0YXRlJztcbmltcG9ydCBUaWNrZXIgZnJvbSAnLi9UaWNrZXInO1xuXG4vKipcbiAqIFBhdXNpbmdTdGF0ZVxuICovXG5jbGFzcyBQYXVzaW5nU3RhdGUgZXh0ZW5kcyBSZWZTdGF0ZSB7XG5cbiAgICBzaWduYWwoKSB7XG5cbiAgICAgICAgcmV0dXJuIFNpZ25hbC5QYXVzaW5nO1xuXG4gICAgfVxuXG4gICAgc3luYygpIHtcblxuICAgICAgICB0aGlzLl9jb3VudGRvd24gPSBuZXcgVGlja2VyKFxuICAgICAgICAgICAgdGhpcy5fY29udGV4dC5jaGlsZHJlbigpLmxlbmd0aCxcbiAgICAgICAgICAgIChtZXNzYWdlLCBmcm9tKSA9PiAobWVzc2FnZSA9PT0gU2lnbmFsLlBhdXNlZCkgJiYgKHRoaXMuX2NvbnRleHQuaXNDaGlsZChmcm9tKSksXG4gICAgICAgICAgICAobWVzc2FnZSwgZnJvbSkgPT4gdGhpcy5fY29udGV4dC5zeXN0ZW0oKS5kZWFkTGV0dGVycygpLnRlbGwobWVzc2FnZSwgZnJvbSksXG4gICAgICAgICAgICAoKSA9PiB0aGlzLl9jb250ZXh0LmRpc3BhdGNoZXIoKS5leGVjdXRlKFxuICAgICAgICAgICAgICAgIGNvbmNlcm4gPT4gY29uY2Vybi5vblBhdXNlKCksXG4gICAgICAgICAgICAgICAgKCkgPT4gdGhpcy5fY29udGV4dC5zZWxmKCkuc2V0U3RhdGUobmV3IFBhdXNlZFN0YXRlKHRoaXMuX2NvbnRleHQpKSkpO1xuXG4gICAgICAgIHRoaXMuX2NvbnRleHQuY2hpbGRyZW4oKS5cbiAgICAgICAgZm9yRWFjaChjaGlsZCA9PlxuICAgICAgICAgICAgY2hpbGQuc2VsZigpLnRlbGwoU2lnbmFsLlBhdXNlLCB0aGlzLl9jb250ZXh0LnNlbGYoKSkpO1xuXG4gICAgfVxuXG4gICAgdGVsbChtZXNzYWdlLCBmcm9tKSB7XG5cbiAgICAgICAgdGhpcy5fY291bnRkb3duLnRpY2sobWVzc2FnZSwgZnJvbSk7XG5cbiAgICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGF1c2luZ1N0YXRlXG4iXX0=
;