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.
- package/lib/app/settings.d.ts.map +1 -1
- package/lib/contracts/settings.d.ts +1 -2
- package/lib/contracts/settings.d.ts.map +1 -1
- package/lib/services/database.d.ts +2 -0
- package/lib/services/database.d.ts.map +1 -1
- package/lib/services/sequelize.d.ts +0 -1
- package/lib/services/sequelize.d.ts.map +1 -1
- package/lib/utils/database.d.ts +1 -2
- package/lib/utils/database.d.ts.map +1 -1
- package/package.json +1 -1
- package/lib/app/classes/broadcast.js +0 -79
- package/lib/app/classes/cache.js +0 -94
- package/lib/app/classes/communication.js +0 -99
- package/lib/app/classes/communicationcontext.js +0 -1
- package/lib/app/classes/event.js +0 -94
- package/lib/app/classes/index.js +0 -105
- package/lib/app/classes/managed.js +0 -145
- package/lib/app/classes/service.js +0 -232
- package/lib/app/classes/servicemodel.js +0 -22
- package/lib/app/classes/singleton.js +0 -26
- package/lib/app/classes/socket/clienthandler.js +0 -54
- package/lib/app/classes/socket/eventhandler.js +0 -51
- package/lib/app/classes/socket/index.js +0 -20
- package/lib/app/classes/system.js +0 -49
- package/lib/app/controller.js +0 -97
- package/lib/app/core.js +0 -47
- package/lib/app/error.js +0 -66
- package/lib/app/exodus.js +0 -97
- package/lib/app/index.js +0 -68
- package/lib/app/settings.js +0 -162
- package/lib/certificates/private_key.pem +0 -27
- package/lib/certificates/public_key.pem +0 -9
- package/lib/contracts/communication/communication.js +0 -39
- package/lib/contracts/communication/index.js +0 -27
- package/lib/contracts/communication/operation.js +0 -5
- package/lib/contracts/console.js +0 -5
- package/lib/contracts/contansts.js +0 -13
- package/lib/contracts/core.js +0 -12
- package/lib/contracts/entity.js +0 -5
- package/lib/contracts/http.js +0 -52
- package/lib/contracts/index.js +0 -104
- package/lib/contracts/messaging.js +0 -50
- package/lib/contracts/security.js +0 -5
- package/lib/contracts/service.js +0 -11
- package/lib/contracts/session.js +0 -5
- package/lib/contracts/settings.js +0 -5
- package/lib/contracts/singleton.js +0 -5
- package/lib/contracts/socket.js +0 -11
- package/lib/contracts/tasks.js +0 -1
- package/lib/controllers/api/file.js +0 -24
- package/lib/controllers/api/index.js +0 -13
- package/lib/controllers/api/log.js +0 -55
- package/lib/controllers/api/report.js +0 -55
- package/lib/controllers/index.js +0 -16
- package/lib/controllers/messaging/application.js +0 -75
- package/lib/controllers/messaging/database.js +0 -64
- package/lib/controllers/messaging/environment.js +0 -111
- package/lib/express.d.js +0 -5
- package/lib/index.js +0 -104
- package/lib/middlewares/access.js +0 -114
- package/lib/middlewares/authentication.js +0 -104
- package/lib/middlewares/file.js +0 -41
- package/lib/middlewares/index.js +0 -36
- package/lib/models/Application.js +0 -65
- package/lib/models/DatabaseHost.js +0 -62
- package/lib/models/EnvConnection.js +0 -41
- package/lib/models/Log.js +0 -67
- package/lib/models/Report.js +0 -65
- package/lib/models/System.js +0 -54
- package/lib/models/index.js +0 -82
- package/lib/routes/api/index.js +0 -16
- package/lib/routes/api/v1/index.js +0 -38
- package/lib/routes/api/v1/logs.js +0 -19
- package/lib/routes/api/v1/report.js +0 -19
- package/lib/routes/api/v1/sse.js +0 -36
- package/lib/routes/index.js +0 -27
- package/lib/routes/messaging/index.js +0 -34
- package/lib/services/database.js +0 -115
- package/lib/services/ecosystem.js +0 -46
- package/lib/services/express.js +0 -162
- package/lib/services/file.js +0 -65
- package/lib/services/file_new.js +0 -136
- package/lib/services/index.js +0 -108
- package/lib/services/log.js +0 -26
- package/lib/services/rabitmq.js +0 -187
- package/lib/services/redis.js +0 -84
- package/lib/services/security.js +0 -231
- package/lib/services/sequelize.js +0 -323
- package/lib/services/socket.js +0 -123
- package/lib/services/task/TaskServiceBase.js +0 -17
- package/lib/services/task/index.js +0 -40
- package/lib/services/task/queue/QueueService.js +0 -48
- package/lib/services/task/queue/QueueTask.js +0 -134
- package/lib/services/task/queue/SingleQueue.js +0 -68
- package/lib/services/task/queue/index.js +0 -27
- package/lib/services/task/scheduler/SchedulerService.js +0 -31
- package/lib/services/task/scheduler/SchedulerTask.js +0 -211
- package/lib/services/task/scheduler/index.js +0 -20
- package/lib/services/test.js +0 -27
- package/lib/socket.d.js +0 -3
- package/lib/tasks/index.js +0 -27
- package/lib/tasks/queue/application.js +0 -44
- package/lib/tasks/queue/environment.js +0 -92
- package/lib/tasks/queue/index.js +0 -20
- package/lib/tasks/queue/teste.js +0 -21
- package/lib/tasks/schedule/index.js +0 -13
- package/lib/tasks/schedule/restart.js +0 -19
- package/lib/tasks/schedule/teste.js +0 -61
- package/lib/utils/api.js +0 -65
- package/lib/utils/database.js +0 -155
- package/lib/utils/date.js +0 -28
- package/lib/utils/index.js +0 -60
- package/lib/utils/logger.js +0 -51
- package/lib/utils/session.js +0 -23
package/lib/services/socket.js
DELETED
@@ -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;
|