let axios = require('axios');
/**
* Класс, отвечающий за выбор конкретной реализации применения транзакции
*/
class TransactionExecutor {
/**
* Конструктор создает несколько дефолтных экзекьюторов.
* п.с.: в настоящее время реализован httpExecutor
*/
constructor() {
this.executors = {
defaultExecutor: axios,
httpExecutor: axios,
webSocketExecutor: (data) => {
return data;
},
tcpExecutor: (data) => {
},
sessionExecutor: function (data) {
return data;
}
}
}
/**
* Получить дефолтный экзекьютор
* @return {Executor} - экземпляр дефолтного экзекьютора
*/
getDefaultExecutor() {
return this.executors.defaultExecutor;
}
/**
* Получение словаря экзекьюторов
* @return {object} - словарь экзекьюторов
*/
getExecutorList() {
return this.executors;
}
/**
* Получение кодов (ключей) словаря экзекьюторов
* @return {Array} - коды экзекьюторов
*/
getExecutorIdList() {
return Object.keys(this.executors);
}
}
module.exports = TransactionExecutor;