exodus-framework 2.0.953 → 2.0.955

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/lib/app/settings.d.ts.map +1 -1
  2. package/lib/contracts/settings.d.ts +1 -2
  3. package/lib/contracts/settings.d.ts.map +1 -1
  4. package/lib/services/database.d.ts +2 -0
  5. package/lib/services/database.d.ts.map +1 -1
  6. package/lib/services/sequelize.d.ts +0 -1
  7. package/lib/services/sequelize.d.ts.map +1 -1
  8. package/lib/utils/database.d.ts +1 -2
  9. package/lib/utils/database.d.ts.map +1 -1
  10. package/package.json +1 -1
  11. package/lib/app/classes/broadcast.js +0 -79
  12. package/lib/app/classes/cache.js +0 -94
  13. package/lib/app/classes/communication.js +0 -99
  14. package/lib/app/classes/communicationcontext.js +0 -1
  15. package/lib/app/classes/event.js +0 -94
  16. package/lib/app/classes/index.js +0 -105
  17. package/lib/app/classes/managed.js +0 -145
  18. package/lib/app/classes/service.js +0 -232
  19. package/lib/app/classes/servicemodel.js +0 -22
  20. package/lib/app/classes/singleton.js +0 -26
  21. package/lib/app/classes/socket/clienthandler.js +0 -54
  22. package/lib/app/classes/socket/eventhandler.js +0 -51
  23. package/lib/app/classes/socket/index.js +0 -20
  24. package/lib/app/classes/system.js +0 -49
  25. package/lib/app/controller.js +0 -97
  26. package/lib/app/core.js +0 -47
  27. package/lib/app/error.js +0 -66
  28. package/lib/app/exodus.js +0 -97
  29. package/lib/app/index.js +0 -68
  30. package/lib/app/settings.js +0 -162
  31. package/lib/certificates/private_key.pem +0 -27
  32. package/lib/certificates/public_key.pem +0 -9
  33. package/lib/contracts/communication/communication.js +0 -39
  34. package/lib/contracts/communication/index.js +0 -27
  35. package/lib/contracts/communication/operation.js +0 -5
  36. package/lib/contracts/console.js +0 -5
  37. package/lib/contracts/contansts.js +0 -13
  38. package/lib/contracts/core.js +0 -12
  39. package/lib/contracts/entity.js +0 -5
  40. package/lib/contracts/http.js +0 -52
  41. package/lib/contracts/index.js +0 -104
  42. package/lib/contracts/messaging.js +0 -50
  43. package/lib/contracts/security.js +0 -5
  44. package/lib/contracts/service.js +0 -11
  45. package/lib/contracts/session.js +0 -5
  46. package/lib/contracts/settings.js +0 -5
  47. package/lib/contracts/singleton.js +0 -5
  48. package/lib/contracts/socket.js +0 -11
  49. package/lib/contracts/tasks.js +0 -1
  50. package/lib/controllers/api/file.js +0 -24
  51. package/lib/controllers/api/index.js +0 -13
  52. package/lib/controllers/api/log.js +0 -55
  53. package/lib/controllers/api/report.js +0 -55
  54. package/lib/controllers/index.js +0 -16
  55. package/lib/controllers/messaging/application.js +0 -75
  56. package/lib/controllers/messaging/database.js +0 -64
  57. package/lib/controllers/messaging/environment.js +0 -111
  58. package/lib/express.d.js +0 -5
  59. package/lib/index.js +0 -104
  60. package/lib/middlewares/access.js +0 -114
  61. package/lib/middlewares/authentication.js +0 -104
  62. package/lib/middlewares/file.js +0 -41
  63. package/lib/middlewares/index.js +0 -36
  64. package/lib/models/Application.js +0 -65
  65. package/lib/models/DatabaseHost.js +0 -62
  66. package/lib/models/EnvConnection.js +0 -41
  67. package/lib/models/Log.js +0 -67
  68. package/lib/models/Report.js +0 -65
  69. package/lib/models/System.js +0 -54
  70. package/lib/models/index.js +0 -82
  71. package/lib/routes/api/index.js +0 -16
  72. package/lib/routes/api/v1/index.js +0 -38
  73. package/lib/routes/api/v1/logs.js +0 -19
  74. package/lib/routes/api/v1/report.js +0 -19
  75. package/lib/routes/api/v1/sse.js +0 -36
  76. package/lib/routes/index.js +0 -27
  77. package/lib/routes/messaging/index.js +0 -34
  78. package/lib/services/database.js +0 -115
  79. package/lib/services/ecosystem.js +0 -46
  80. package/lib/services/express.js +0 -162
  81. package/lib/services/file.js +0 -65
  82. package/lib/services/file_new.js +0 -136
  83. package/lib/services/index.js +0 -108
  84. package/lib/services/log.js +0 -26
  85. package/lib/services/rabitmq.js +0 -187
  86. package/lib/services/redis.js +0 -84
  87. package/lib/services/security.js +0 -231
  88. package/lib/services/sequelize.js +0 -323
  89. package/lib/services/socket.js +0 -123
  90. package/lib/services/task/TaskServiceBase.js +0 -17
  91. package/lib/services/task/index.js +0 -40
  92. package/lib/services/task/queue/QueueService.js +0 -48
  93. package/lib/services/task/queue/QueueTask.js +0 -134
  94. package/lib/services/task/queue/SingleQueue.js +0 -68
  95. package/lib/services/task/queue/index.js +0 -27
  96. package/lib/services/task/scheduler/SchedulerService.js +0 -31
  97. package/lib/services/task/scheduler/SchedulerTask.js +0 -211
  98. package/lib/services/task/scheduler/index.js +0 -20
  99. package/lib/services/test.js +0 -27
  100. package/lib/socket.d.js +0 -3
  101. package/lib/tasks/index.js +0 -27
  102. package/lib/tasks/queue/application.js +0 -44
  103. package/lib/tasks/queue/environment.js +0 -92
  104. package/lib/tasks/queue/index.js +0 -20
  105. package/lib/tasks/queue/teste.js +0 -21
  106. package/lib/tasks/schedule/index.js +0 -13
  107. package/lib/tasks/schedule/restart.js +0 -19
  108. package/lib/tasks/schedule/teste.js +0 -61
  109. package/lib/utils/api.js +0 -65
  110. package/lib/utils/database.js +0 -155
  111. package/lib/utils/date.js +0 -28
  112. package/lib/utils/index.js +0 -60
  113. package/lib/utils/logger.js +0 -51
  114. package/lib/utils/session.js +0 -23
@@ -1,123 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _socket = require("socket.io");
8
- var _service = _interopRequireDefault(require("../app/classes/service"));
9
- var _controller = require("../app/controller");
10
- var _core = require("../contracts/core");
11
- var _authentication = require("../middlewares/authentication");
12
- var _express = _interopRequireDefault(require("./express"));
13
- var _utils = require("../utils");
14
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
- /**
16
- * Serviço de gerênciamento de comunicação WS/WSS Socket
17
- *
18
- * @class SocketIOService
19
- * @extends {Service}
20
- * @implements {IService}
21
- */
22
- class SocketIOService extends _service.default {
23
- server;
24
- mainRouter;
25
- eventhandlers;
26
- clientHandlers = [];
27
- async onServiceClusterInit() {
28
- await super.onServiceClusterInit();
29
- if (!this.mainRouter) throw new Error('Need router'); //!sem router
30
-
31
- this.eventhandlers = new Map();
32
- }
33
- async onExodusClusterStarted() {
34
- await super.onExodusClusterStarted();
35
- //! este depende de ExpressService para iniciar, por isso está aqui
36
-
37
- try {
38
- this.createSocket(_express.default.getService().getHttpServer());
39
- await this.registerHandlers();
40
- this.server.on('connection', this.onConnection.bind(this));
41
- this.log('✅ Socket server created');
42
- } catch (error) {
43
- (0, _utils.logger)().error(error, `Not connected to SocketIO`);
44
- }
45
- }
46
- async onConnection(socket) {
47
- this.log(`${socket.id} conectado`);
48
- const request = new _controller.SocketRequest(socket);
49
- const eventsH = Array.from(this.eventhandlers.values());
50
- const clientsH = await Promise.all(this.clientHandlers.map(async E => {
51
- const handler = new E();
52
- await handler.onInit(request);
53
- return handler;
54
- }));
55
- clientsH.forEach(handler => handler.onConnect());
56
- const onAny = (event, ...args) => clientsH.forEach(handler => handler.onEvent(event, args));
57
- socket.onAny(onAny);
58
- eventsH.forEach(handlers => {
59
- handlers.forEach(handler => handler.onConnect(request));
60
- });
61
- socket.on('disconnect', () => {
62
- this.log(`${socket.id} desconectado`);
63
- eventsH.forEach(handlers => {
64
- handlers.forEach(handler => handler.onDisconnect(request));
65
- });
66
- clientsH.forEach(handler => handler.onDisconnect());
67
- socket.offAny(onAny);
68
- });
69
- this.bindEvents(socket);
70
- }
71
- bindEvents(socket) {
72
- const request = new _controller.SocketRequest(socket);
73
- const handlers = Array.from(this.eventhandlers.entries());
74
- for (const group of handlers) {
75
- const event = group[0];
76
- const handlers = group[1].filter(handler => {
77
- let isSameSide = false;
78
- switch (handler.getSide()) {
79
- case _core.eExecutionSide.CLUSTER:
80
- if (this.isCluster()) isSameSide = true;
81
- break;
82
- case _core.eExecutionSide.MASTER:
83
- if (this.isMaster()) isSameSide = true;
84
- break;
85
- case _core.eExecutionSide.ANY:
86
- isSameSide = true;
87
- break;
88
- }
89
- return handler.getActive() && isSameSide;
90
- });
91
- socket.on(event, (...args) => {
92
- handlers.forEach(handler => {
93
- handler.onEvent(request, ...args);
94
- });
95
- });
96
- }
97
- }
98
- createSocket(app, cors = {
99
- origin: '*'
100
- }) {
101
- this.server = new _socket.Server(app, {
102
- cors
103
- });
104
- const middleware = new _authentication.SocketAuthenticationMiddleware();
105
- this.server.use(middleware.decryptToken);
106
- }
107
- static registerRouter(router) {
108
- this.getService().mainRouter = router;
109
- }
110
- static registerClientHandlers(handlers) {
111
- this.getService().clientHandlers = handlers;
112
- }
113
- async registerHandlers() {
114
- return Promise.all(this.mainRouter.map(async handler => {
115
- handler.onInit();
116
- const event = handler.getEvent();
117
- const group = this.eventhandlers.get(event) || [];
118
- group.push(handler);
119
- this.eventhandlers.set(event, group);
120
- }));
121
- }
122
- }
123
- var _default = exports.default = SocketIOService;
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _app = require("../../app");
8
- class TaskServiceBase extends _app.Service {
9
- tasks = [];
10
- static setTaskPath(path) {
11
- this.getService().jobsPath = path;
12
- }
13
- static registerTask(task) {
14
- this.getService().tasks.push(task);
15
- }
16
- }
17
- var _default = exports.default = TaskServiceBase;
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _exportNames = {
7
- TaskServiceBase: true
8
- };
9
- Object.defineProperty(exports, "TaskServiceBase", {
10
- enumerable: true,
11
- get: function () {
12
- return _TaskServiceBase.default;
13
- }
14
- });
15
- var _queue = require("./queue");
16
- Object.keys(_queue).forEach(function (key) {
17
- if (key === "default" || key === "__esModule") return;
18
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
19
- if (key in exports && exports[key] === _queue[key]) return;
20
- Object.defineProperty(exports, key, {
21
- enumerable: true,
22
- get: function () {
23
- return _queue[key];
24
- }
25
- });
26
- });
27
- var _scheduler = require("./scheduler");
28
- Object.keys(_scheduler).forEach(function (key) {
29
- if (key === "default" || key === "__esModule") return;
30
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
31
- if (key in exports && exports[key] === _scheduler[key]) return;
32
- Object.defineProperty(exports, key, {
33
- enumerable: true,
34
- get: function () {
35
- return _scheduler[key];
36
- }
37
- });
38
- });
39
- var _TaskServiceBase = _interopRequireDefault(require("./TaskServiceBase"));
40
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _bullmq = require("bullmq");
8
- var _app = require("../../../app");
9
- var _core = require("../../../contracts/core");
10
- var _TaskServiceBase = _interopRequireDefault(require("../TaskServiceBase"));
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
- //* Queue
13
- class QueueTaskService extends _TaskServiceBase.default {
14
- connection;
15
- async onStart() {
16
- this.connection = {
17
- host: _app.Core.settings.getCache().host,
18
- port: Number(_app.Core.settings.getCache().port),
19
- password: _app.Core.settings.getCache().password
20
- };
21
- this.log('Initializing jobs', 'info');
22
- for (const task of this.tasks) {
23
- this.startTask(task.singleton());
24
- }
25
- this.log('All jobs initializeds', 'info');
26
- return true;
27
- }
28
- async startTask(task) {
29
- task.taskInit();
30
- if (!task.getActive()) return;
31
- if (task.getSide() === _core.eExecutionSide.ANY || task.getSide() === _core.eExecutionSide.CLUSTER && this.isCluster() || task.getSide() === _core.eExecutionSide.MASTER && this.isMaster()) {
32
- const worker = new _bullmq.Worker(task.getName(), task.execute.bind(task), {
33
- connection: this.connection,
34
- concurrency: task.getConcurrency()
35
- });
36
- task.setWorker(worker);
37
- }
38
- const queue = new _bullmq.Queue(task.getName(), {
39
- connection: this.connection
40
- });
41
- task.setQueue(queue);
42
- this.log(`Task '${task.getName()}' started...`, 'warning');
43
- }
44
- getCacheConnection() {
45
- return this.connection;
46
- }
47
- }
48
- var _default = exports.default = QueueTaskService;
@@ -1,134 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _app = require("../../../app");
8
- var _communication = _interopRequireDefault(require("../../../app/classes/communication"));
9
- var _service = require("../../../contracts/service");
10
- var _core = require("../../../contracts/core");
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
- class QueueTask extends _app.Singleton {
13
- rECom;
14
- queue;
15
- worker;
16
- side;
17
- name;
18
- active;
19
- concurrency;
20
-
21
- //# Init
22
- async taskInit() {
23
- this.rECom = new _communication.default(this.constructor.name);
24
- this.rECom.on(_service.eEventCommunication.RECEIVED_CLUSTER_MESSAGE, this.onTaskMasterReceived.bind(this));
25
- this.rECom.on(_service.eEventCommunication.RECEIVED_MASTER_MESSAGE, this.onTaskClusterReceived.bind(this));
26
- this.side = _core.eExecutionSide.ANY;
27
- this.name = this.constructor.name;
28
- this.active = true;
29
- this.concurrency = 1;
30
- this.onTaskInit();
31
- if (this.isMaster()) {
32
- this.onTaskMasterInit();
33
- }
34
- if (this.isCluster()) {
35
- this.onTaskClusterInit();
36
- }
37
- }
38
-
39
- //# Getters
40
- getQueue() {
41
- return this.queue;
42
- }
43
- getWorker() {
44
- return (this.side === _core.eExecutionSide.ANY || this.side === _core.eExecutionSide.CLUSTER && this.isCluster() || this.side === _core.eExecutionSide.MASTER && this.isMaster()) && this.worker != undefined;
45
- }
46
- getActive() {
47
- return this.active;
48
- }
49
- getName() {
50
- return this.name;
51
- }
52
- getSide() {
53
- return this.side;
54
- }
55
- getConcurrency() {
56
- return this.concurrency;
57
- }
58
-
59
- //# Setters
60
- setQueue(queue) {
61
- this.queue = queue;
62
- }
63
- setWorker(worker) {
64
- this.worker = worker;
65
- }
66
-
67
- //# Basic Handlers
68
- execute(job, token) {
69
- this.onExecute(job, token);
70
- if (this.isCluster()) {
71
- this.onClusterExecute(job, token);
72
- }
73
- if (this.isMaster()) {
74
- this.onMasterExecute(job, token);
75
- }
76
- }
77
- async addJob(data) {
78
- if (!this.getActive()) {
79
- new _app.ErrorHandler('falha ao adicionar uma tarefa', new Error('A task não está ativa'));
80
- return;
81
- }
82
- if (!this.getQueue()) {
83
- new _app.ErrorHandler('falha ao adicionar uma tarefa', new Error('A task não está pronta'));
84
- return;
85
- }
86
- await this.queue.add(this.getName(), data);
87
- this.onNewJob(data);
88
- // this.log('Nova tarefa disponível.', 'comment');
89
- }
90
- static async addJob(data) {
91
- this.singleton().addJob(data);
92
- }
93
-
94
- //# Events
95
- onTaskInit() {
96
- return;
97
- }
98
- onTaskClusterInit() {
99
- return;
100
- }
101
- onTaskMasterInit() {
102
- return;
103
- }
104
- //----------------------------------------------------------------------------
105
- onTaskMasterReceived(_worker, _eventKey, _data) {
106
- return;
107
- }
108
- onTaskClusterReceived(_eventKey, _data) {
109
- return;
110
- }
111
- //----------------------------------------------------------------------------
112
- onClusterExecute(_job, _token) {
113
- return;
114
- }
115
- onMasterExecute(_job, _token) {
116
- return;
117
- }
118
- onExecute(_job, _token) {
119
- return;
120
- }
121
- //----------------------------------------------------------------------------
122
- onNewJob(_data) {
123
- return;
124
- }
125
-
126
- //# Managed
127
- sendTaskToCluster(clusterId, event, data) {
128
- this.rECom.sendMessageToCluster(clusterId, event, data);
129
- }
130
- sendTaskToMaster(event, data) {
131
- this.rECom.sendMessageToMaster(event, data);
132
- }
133
- }
134
- var _default = exports.default = QueueTask;
@@ -1,68 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _bullmq = require("bullmq");
8
- var _system = _interopRequireDefault(require("../../../app/classes/system"));
9
- var _QueueService = _interopRequireDefault(require("./QueueService"));
10
- var _app = require("../../../app");
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
- class SingleQueue extends _system.default {
13
- worker;
14
- queue;
15
- concurrency = 1;
16
- name;
17
- onTick;
18
- constructor(cacheKey) {
19
- super();
20
- this.cacheKey = cacheKey;
21
- this.name = `${this.constructor.name}.${this.cacheKey}`;
22
- }
23
- start() {
24
- this.createWorker();
25
- this.createQueue();
26
- }
27
- createQueue() {
28
- this.queue = new _bullmq.Queue(this.name, {
29
- connection: _QueueService.default.getService().getCacheConnection()
30
- });
31
- }
32
- createWorker() {
33
- this.worker = new _bullmq.Worker(this.name, this.tick.bind(this), {
34
- connection: _QueueService.default.getService().getCacheConnection(),
35
- concurrency: this.concurrency
36
- });
37
- }
38
- setConcurrency(concurrency) {
39
- if (concurrency < 1) concurrency = 1;
40
- this.concurrency = concurrency;
41
- }
42
- async tick(job, _token) {
43
- if (!this.onTick) return;
44
- const {
45
- data
46
- } = job;
47
- await this.onTick(data);
48
- }
49
- setTick(cb) {
50
- this.onTick = cb;
51
- }
52
- async addJob(data) {
53
- if (!this.queue) {
54
- new _app.ErrorHandler('falha ao adicionar uma tarefa', new Error('A task não está pronta'));
55
- return;
56
- }
57
- await this.queue.add(this.name, data);
58
- }
59
- pauseQueue() {
60
- if (!this.queue) return;
61
- this.queue.pause();
62
- }
63
- resumeQueue() {
64
- if (!this.queue) return;
65
- this.queue.resume();
66
- }
67
- }
68
- var _default = exports.default = SingleQueue;
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "QueueTask", {
7
- enumerable: true,
8
- get: function () {
9
- return _QueueTask.default;
10
- }
11
- });
12
- Object.defineProperty(exports, "QueueTaskService", {
13
- enumerable: true,
14
- get: function () {
15
- return _QueueService.default;
16
- }
17
- });
18
- Object.defineProperty(exports, "SingleQueue", {
19
- enumerable: true,
20
- get: function () {
21
- return _SingleQueue.default;
22
- }
23
- });
24
- var _QueueService = _interopRequireDefault(require("./QueueService"));
25
- var _QueueTask = _interopRequireDefault(require("./QueueTask"));
26
- var _SingleQueue = _interopRequireDefault(require("./SingleQueue"));
27
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -1,31 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _nodeSchedule = require("node-schedule");
8
- var _core = require("../../../contracts/core");
9
- var _TaskServiceBase = _interopRequireDefault(require("../TaskServiceBase"));
10
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
- class SchedulerTaskService extends _TaskServiceBase.default {
12
- async onStart() {
13
- this.log('Initializing taks...');
14
- for (const task of this.tasks) {
15
- const intanceTask = task.singleton();
16
- this.startTask(intanceTask);
17
- }
18
- return true;
19
- }
20
- async startTask(task) {
21
- await task.taskInit();
22
- if (!task.getActive()) return;
23
- if (task.getSide() === _core.eExecutionSide.ANY || task.getSide() === _core.eExecutionSide.CLUSTER && this.isCluster() || task.getSide() === _core.eExecutionSide.MASTER && this.isMaster()) {
24
- if (task.isImmediate()) task.execute();
25
- const job = (0, _nodeSchedule.scheduleJob)(task.getCronTask(), task.execute.bind(task));
26
- task.setJob(job);
27
- }
28
- this.log(`Job '${task.getName()}' started...`, 'warning');
29
- }
30
- }
31
- var _default = exports.default = SchedulerTaskService;
@@ -1,211 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _app = require("../../../app");
8
- var _contansts = require("../../../contracts/contansts");
9
- var _service = require("../../../contracts/service");
10
- var _communication = _interopRequireDefault(require("../../../app/classes/communication"));
11
- var _core = require("../../../contracts/core");
12
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
- class ScheduleTask extends _app.Singleton {
14
- rECom;
15
- workPerCluster = new Map();
16
- lastDesignatedClusterId = 0;
17
- registeredClusters = new Map();
18
- cron;
19
- active;
20
- name;
21
- side;
22
- job;
23
- /**
24
- * Deve ser executada imediatamente e depois agendada?
25
- *
26
- * @protected
27
- * @type {boolean}
28
- * @memberof ScheduleTask
29
- */
30
- immediate;
31
- /**
32
- * Esta task deve ficar ativa ou parada após a execução?
33
- * Tenha em mente que se/também immediate = true, esta task será executada apenas na
34
- * inicialização do Exodus
35
- *
36
- * @protected
37
- * @type {boolean}
38
- * @memberof ScheduleTask
39
- */
40
- persistent;
41
- async execute() {
42
- this.onExecute();
43
- if (this.isCluster()) {
44
- this.onClusterExecute();
45
- }
46
- if (this.isMaster()) {
47
- this.onMasterExecute();
48
- }
49
- if (!this.persistent) this.job.cancel();
50
- }
51
- async taskInit() {
52
- this.cron = _contansts.eScheduleTaskInterval.DEFAULT;
53
- this.active = true;
54
- this.name = this.constructor.name;
55
- this.side = _core.eExecutionSide.ANY;
56
- this.immediate = false;
57
- this.persistent = true;
58
- this.rECom = new _communication.default(this.name);
59
- this.rECom.on(_service.eEventCommunication.RECEIVED_CLUSTER_MESSAGE, this.taskMasterReceived.bind(this));
60
- this.rECom.on(_service.eEventCommunication.RECEIVED_MASTER_MESSAGE, this.taskClusterReceived.bind(this));
61
- this.onTaskInit();
62
- if (this.isMaster()) {
63
- this.onTaskMasterInit();
64
- }
65
- if (this.isCluster()) {
66
- this.onTaskClusterInit();
67
- this.sendToTaskMaster('task.init', {});
68
- }
69
- }
70
- sendToTaskCluster(clusterId, event, data) {
71
- this.rECom.sendToServiceCluster(clusterId, event, data);
72
- }
73
- sendToTaskMaster(event, data) {
74
- this.rECom.sendToServiceMaster(event, data);
75
- }
76
-
77
- //# Muted methods
78
- onTaskInit() {
79
- return;
80
- }
81
- onTaskClusterInit() {
82
- return;
83
- }
84
- onTaskMasterInit() {
85
- return;
86
- }
87
- getCronTask() {
88
- return this.cron;
89
- }
90
- getActive() {
91
- return this.active;
92
- }
93
- getName() {
94
- return this.name;
95
- }
96
- getSide() {
97
- return this.side;
98
- }
99
- isImmediate() {
100
- return this.immediate;
101
- }
102
- setJob(job) {
103
- if (this.job) return;
104
- this.job = job;
105
- }
106
- onExecute() {
107
- return;
108
- }
109
- onClusterExecute() {
110
- return;
111
- }
112
- onMasterExecute() {
113
- return;
114
- }
115
- addTaskWork(workId, workData) {
116
- if (this.isCluster()) {
117
- this.sendTaskWorkToMaster(workId, workData);
118
- } else {
119
- this.sendTaskWorkToCluster(workId, workData);
120
- }
121
- }
122
-
123
- //# Cluster
124
- sendTaskWorkToMaster(workId, workData) {
125
- this.sendToTaskMaster('work.add', {
126
- workId,
127
- workData
128
- });
129
- }
130
- taskClusterReceived(eventKey, data) {
131
- switch (eventKey) {
132
- case 'work.add':
133
- this.onTaskClusterReceivedWork(eventKey, data);
134
- break;
135
- default:
136
- this.onTaskClusterReceivedData(eventKey, data);
137
- break;
138
- }
139
- }
140
- onTaskClusterReceivedData(_eventKey, _data) {
141
- return;
142
- }
143
- onTaskClusterReceivedWork(_eventKey, _data) {
144
- return;
145
- }
146
-
147
- //# Master
148
- taskMasterReceived(worker, eventKey, data) {
149
- switch (eventKey) {
150
- case 'work.add':
151
- this.onTaskMasterReceivedWork(worker, eventKey, data);
152
- break;
153
- case 'work.add.accepted':
154
- this.onTaskMasterAcceptedWork(worker, eventKey, data);
155
- break;
156
- case 'task.init':
157
- this.taskClusterRegistered(worker);
158
- break;
159
- default:
160
- this.onTaskMasterReceived(worker, eventKey, data);
161
- break;
162
- }
163
- }
164
- onTaskMasterReceived(worker, eventKey, data) {
165
- switch (eventKey) {
166
- case 'work.add':
167
- this.onTaskMasterReceivedWork(worker, eventKey, data);
168
- break;
169
- case 'work.add.accepted':
170
- this.onTaskMasterAcceptedWork(worker, eventKey, data);
171
- break;
172
- default:
173
- console.log('mensagem desconhecida recebida', eventKey);
174
- break;
175
- }
176
- }
177
- onTaskMasterReceivedWork(_worker, _eventKey, _data) {
178
- return;
179
- }
180
- onTaskMasterAcceptedWork(_worker, _eventKey, _data) {
181
- return;
182
- }
183
- sendTaskWorkToCluster(workId, workData) {
184
- const total = this.getClusterCount();
185
- if (!this.workPerCluster.has(workId)) {
186
- const nextCluster = this.lastDesignatedClusterId + 1 > total ? 1 : this.lastDesignatedClusterId + 1;
187
- this.sendToTaskCluster(nextCluster, 'work.add', {
188
- workId,
189
- workData
190
- });
191
- }
192
- }
193
- onClusterDown(_, worker) {
194
- if (this.registeredClusters.has(worker.id)) {
195
- // console.log('removendo cluster da lista de registrados');
196
- this.registeredClusters.delete(worker.id);
197
- }
198
- }
199
- taskClusterRegistered(_worker) {
200
- if (!this.registeredClusters.has(_worker.id)) {
201
- // console.log('registrando novo cluster', _worker.id);
202
-
203
- this.registeredClusters.set(_worker.id, true);
204
- }
205
- this.onTaskClusterRegistered(_worker);
206
- }
207
- onTaskClusterRegistered(_worker) {
208
- return;
209
- }
210
- }
211
- var _default = exports.default = ScheduleTask;