concern
Version:
A library for seperating your application logic into concerns.
89 lines (63 loc) • 6.93 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 _StoppedState = require('./StoppedState');
var _StoppedState2 = _interopRequireDefault(_StoppedState);
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; }
/**
* StoppingState
*/
var StoppingState = function (_RefState) {
_inherits(StoppingState, _RefState);
function StoppingState() {
_classCallCheck(this, StoppingState);
return _possibleConstructorReturn(this, (StoppingState.__proto__ || Object.getPrototypeOf(StoppingState)).apply(this, arguments));
}
_createClass(StoppingState, [{
key: 'signal',
value: function signal() {
return _Signal2.default.Stopping;
}
}, {
key: 'sync',
value: function sync() {
var _this2 = this;
this._countdown = new _Ticker2.default(this._context.children().length, function (message, from) {
return message === _Signal2.default.Stopped && _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.onStop();
}, function () {
return _this2._context.self().setState(new _StoppedState2.default(_this2._context));
});
});
this._context.children().forEach(function (child) {
return child.self().tell(_Signal2.default.Stop, _this2._context.self());
});
}
}, {
key: 'tell',
value: function tell(message, from) {
this._countdown.tick(message, from);
}
}]);
return StoppingState;
}(_RefState3.default);
exports.default = StoppingState;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0ZS9TdG9wcGluZ1N0YXRlLmpzIl0sIm5hbWVzIjpbIlN0b3BwaW5nU3RhdGUiLCJTdG9wcGluZyIsIl9jb3VudGRvd24iLCJfY29udGV4dCIsImNoaWxkcmVuIiwibGVuZ3RoIiwibWVzc2FnZSIsImZyb20iLCJTdG9wcGVkIiwiaXNDaGlsZCIsInN5c3RlbSIsImRlYWRMZXR0ZXJzIiwidGVsbCIsImRpc3BhdGNoZXIiLCJleGVjdXRlIiwiY29uY2VybiIsIm9uU3RvcCIsInNlbGYiLCJzZXRTdGF0ZSIsImZvckVhY2giLCJjaGlsZCIsIlN0b3AiLCJ0aWNrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBOzs7SUFHTUEsYTs7Ozs7Ozs7Ozs7aUNBRU87O0FBRUwsbUJBQU8saUJBQU9DLFFBQWQ7QUFFSDs7OytCQUVNO0FBQUE7O0FBRUgsaUJBQUtDLFVBQUwsR0FBa0IscUJBQ2QsS0FBS0MsUUFBTCxDQUFjQyxRQUFkLEdBQXlCQyxNQURYLEVBRWQsVUFBQ0MsT0FBRCxFQUFVQyxJQUFWO0FBQUEsdUJBQW9CRCxZQUFZLGlCQUFPRSxPQUFwQixJQUFpQyxPQUFLTCxRQUFMLENBQWNNLE9BQWQsQ0FBc0JGLElBQXRCLENBQXBEO0FBQUEsYUFGYyxFQUdkLFVBQUNELE9BQUQsRUFBVUMsSUFBVjtBQUFBLHVCQUFtQixPQUFLSixRQUFMLENBQWNPLE1BQWQsR0FBdUJDLFdBQXZCLEdBQXFDQyxJQUFyQyxDQUEwQ04sT0FBMUMsRUFBbURDLElBQW5ELENBQW5CO0FBQUEsYUFIYyxFQUlkO0FBQUEsdUJBQU0sT0FBS0osUUFBTCxDQUFjVSxVQUFkLEdBQTJCQyxPQUEzQixDQUNGO0FBQUEsMkJBQVdDLFFBQVFDLE1BQVIsRUFBWDtBQUFBLGlCQURFLEVBRUY7QUFBQSwyQkFBTSxPQUFLYixRQUFMLENBQWNjLElBQWQsR0FBcUJDLFFBQXJCLENBQThCLDJCQUFpQixPQUFLZixRQUF0QixDQUE5QixDQUFOO0FBQUEsaUJBRkUsQ0FBTjtBQUFBLGFBSmMsQ0FBbEI7O0FBUUEsaUJBQUtBLFFBQUwsQ0FBY0MsUUFBZCxHQUNBZSxPQURBLENBQ1E7QUFBQSx1QkFDSkMsTUFBTUgsSUFBTixHQUFhTCxJQUFiLENBQWtCLGlCQUFPUyxJQUF6QixFQUErQixPQUFLbEIsUUFBTCxDQUFjYyxJQUFkLEVBQS9CLENBREk7QUFBQSxhQURSO0FBSUg7Ozs2QkFFSVgsTyxFQUFTQyxJLEVBQU07O0FBRWhCLGlCQUFLTCxVQUFMLENBQWdCb0IsSUFBaEIsQ0FBcUJoQixPQUFyQixFQUE4QkMsSUFBOUI7QUFFSDs7Ozs7O2tCQUlVUCxhIiwiZmlsZSI6IlN0b3BwaW5nU3RhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvbWlzZSBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgUmVmU3RhdGUgZnJvbSAnLi9SZWZTdGF0ZSc7XG5pbXBvcnQgU2lnbmFsIGZyb20gJy4vU2lnbmFsJztcbmltcG9ydCBTdG9wcGVkU3RhdGUgZnJvbSAnLi9TdG9wcGVkU3RhdGUnO1xuaW1wb3J0IFRpY2tlciBmcm9tICcuL1RpY2tlcic7XG5cbi8qKlxuICogU3RvcHBpbmdTdGF0ZVxuICovXG5jbGFzcyBTdG9wcGluZ1N0YXRlIGV4dGVuZHMgUmVmU3RhdGUge1xuXG4gICAgc2lnbmFsKCkge1xuXG4gICAgICAgIHJldHVybiBTaWduYWwuU3RvcHBpbmc7XG5cbiAgICB9XG5cbiAgICBzeW5jKCkge1xuXG4gICAgICAgIHRoaXMuX2NvdW50ZG93biA9IG5ldyBUaWNrZXIoXG4gICAgICAgICAgICB0aGlzLl9jb250ZXh0LmNoaWxkcmVuKCkubGVuZ3RoLFxuICAgICAgICAgICAgKG1lc3NhZ2UsIGZyb20pID0+IChtZXNzYWdlID09PSBTaWduYWwuU3RvcHBlZCkgJiYgKHRoaXMuX2NvbnRleHQuaXNDaGlsZChmcm9tKSksXG4gICAgICAgICAgICAobWVzc2FnZSwgZnJvbSkgPT4gdGhpcy5fY29udGV4dC5zeXN0ZW0oKS5kZWFkTGV0dGVycygpLnRlbGwobWVzc2FnZSwgZnJvbSksXG4gICAgICAgICAgICAoKSA9PiB0aGlzLl9jb250ZXh0LmRpc3BhdGNoZXIoKS5leGVjdXRlKFxuICAgICAgICAgICAgICAgIGNvbmNlcm4gPT4gY29uY2Vybi5vblN0b3AoKSxcbiAgICAgICAgICAgICAgICAoKSA9PiB0aGlzLl9jb250ZXh0LnNlbGYoKS5zZXRTdGF0ZShuZXcgU3RvcHBlZFN0YXRlKHRoaXMuX2NvbnRleHQpKSkpO1xuXG4gICAgICAgIHRoaXMuX2NvbnRleHQuY2hpbGRyZW4oKS5cbiAgICAgICAgZm9yRWFjaChjaGlsZCA9PlxuICAgICAgICAgICAgY2hpbGQuc2VsZigpLnRlbGwoU2lnbmFsLlN0b3AsIHRoaXMuX2NvbnRleHQuc2VsZigpKSk7XG5cbiAgICB9XG5cbiAgICB0ZWxsKG1lc3NhZ2UsIGZyb20pIHtcblxuICAgICAgICB0aGlzLl9jb3VudGRvd24udGljayhtZXNzYWdlLCBmcm9tKTtcblxuICAgIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBTdG9wcGluZ1N0YXRlXG4iXX0=
;