Необязательность реузальтат пользовательских пре/пост обработчиков

This commit is contained in:
Mikhail Chechnev 2018-12-15 15:58:11 +03:00
parent d8c3efc982
commit 25b7b10bb7
2 changed files with 75 additions and 65 deletions

View File

@ -127,29 +127,31 @@ class InQueue extends EventEmitter {
throw new ServerError(SERR_APP_SERVER_BEFORE, e.message); throw new ServerError(SERR_APP_SERVER_BEFORE, e.message);
} }
//Проверяем структуру ответа функции предобработки //Проверяем структуру ответа функции предобработки
let sCheckResult = validateObject( if (resBefore) {
resBefore, let sCheckResult = validateObject(
objInQueueSchema.InQueueProcessorFnBefore, resBefore,
"Результат функции предобработки входящего сообщения" objInQueueSchema.InQueueProcessorFnBefore,
); "Результат функции предобработки входящего сообщения"
//Если структура ответа в норме );
if (!sCheckResult) { //Если структура ответа в норме
//Выставим статус сообщению очереди - исполнено сервером приложений if (!sCheckResult) {
q = await this.dbConn.setQueueState({ //Выставим статус сообщению очереди - исполнено сервером приложений
nQueueId: q.nId, q = await this.dbConn.setQueueState({
nExecState: objQueueSchema.NQUEUE_EXEC_STATE_APP_OK
});
//Фиксируем успех исполнения
if (resBefore.blMsg) {
q = await this.dbConn.setQueueAppSrvResult({
nQueueId: q.nId, nQueueId: q.nId,
blMsg: resBefore.blMsg, nExecState: objQueueSchema.NQUEUE_EXEC_STATE_APP_OK
blResp: null
}); });
//Фиксируем успех исполнения
if (resBefore.blMsg) {
q = await this.dbConn.setQueueAppSrvResult({
nQueueId: q.nId,
blMsg: resBefore.blMsg,
blResp: null
});
}
} else {
//Или расскажем об ошибке
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
} }
} else {
//Или расскажем об ошибке
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
} }
} }
//Вызываем обработчик со стороны БД (если он есть) //Вызываем обработчик со стороны БД (если он есть)
@ -184,27 +186,29 @@ class InQueue extends EventEmitter {
throw new ServerError(SERR_APP_SERVER_AFTER, e.message); throw new ServerError(SERR_APP_SERVER_AFTER, e.message);
} }
//Проверяем структуру ответа функции предобработки //Проверяем структуру ответа функции предобработки
let sCheckResult = validateObject( if (resAfter) {
resAfter, let sCheckResult = validateObject(
objInQueueSchema.InQueueProcessorFnAfter, resAfter,
"Результат функции постобработки входящего сообщения" objInQueueSchema.InQueueProcessorFnAfter,
); "Результат функции постобработки входящего сообщения"
//Если структура ответа в норме );
if (!sCheckResult) { //Если структура ответа в норме
//Выставим статус сообщению очереди - исполнено сервером приложений if (!sCheckResult) {
q = await this.dbConn.setQueueState({ //Выставим статус сообщению очереди - исполнено сервером приложений
nQueueId: q.nId, q = await this.dbConn.setQueueState({
nExecState: objQueueSchema.NQUEUE_EXEC_STATE_APP_OK nQueueId: q.nId,
}); nExecState: objQueueSchema.NQUEUE_EXEC_STATE_APP_OK
//Фиксируем успех исполнения });
q = await this.dbConn.setQueueAppSrvResult({ //Фиксируем успех исполнения
nQueueId: q.nId, q = await this.dbConn.setQueueAppSrvResult({
blMsg: q.blMsg, nQueueId: q.nId,
blResp: resAfter.blResp blMsg: q.blMsg,
}); blResp: resAfter.blResp
} else { });
//Или расскажем об ошибке } else {
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult); //Или расскажем об ошибке
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
}
} }
} }
//Всё успешно - отдаём результат клиенту //Всё успешно - отдаём результат клиенту

View File

@ -103,19 +103,21 @@ const appProcess = async prms => {
throw new ServerError(SERR_APP_SERVER_BEFORE, e.message); throw new ServerError(SERR_APP_SERVER_BEFORE, e.message);
} }
//Проверяем структуру ответа функции предобработки //Проверяем структуру ответа функции предобработки
let sCheckResult = validateObject( if (resBefore) {
resBefore, let sCheckResult = validateObject(
objOutQueueProcessorSchema.OutQueueProcessorFnBefore, resBefore,
"Результат функции предобработки исходящего сообщения" objOutQueueProcessorSchema.OutQueueProcessorFnBefore,
); "Результат функции предобработки исходящего сообщения"
//Если структура ответа в норме );
if (!sCheckResult) { //Если структура ответа в норме
//Применим её if (!sCheckResult) {
options = _.cloneDeep(resBefore.options); //Применим её
if (resBefore.blMsg) prms.queue.blMsg = resBefore.blMsg; options = _.cloneDeep(resBefore.options);
} else { if (resBefore.blMsg) prms.queue.blMsg = resBefore.blMsg;
//Или расскажем об ошибке } else {
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult); //Или расскажем об ошибке
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
}
} }
} }
//Отправляем сообщение удалённому серверу //Отправляем сообщение удалённому серверу
@ -131,18 +133,22 @@ const appProcess = async prms => {
throw new ServerError(SERR_APP_SERVER_AFTER, e.message); throw new ServerError(SERR_APP_SERVER_AFTER, e.message);
} }
//Проверяем структуру ответа функции предобработки //Проверяем структуру ответа функции предобработки
let sCheckResult = validateObject( if (resAfter) {
resAfter, let sCheckResult = validateObject(
objOutQueueProcessorSchema.OutQueueProcessorFnAfter, resAfter,
"Результат функции постобработки исходящего сообщения" objOutQueueProcessorSchema.OutQueueProcessorFnAfter,
); "Результат функции постобработки исходящего сообщения"
//Если структура ответа в норме );
if (!sCheckResult) { //Если структура ответа в норме
//Применим её if (!sCheckResult) {
prms.queue.blResp = resAfter.blResp; //Применим её
prms.queue.blResp = resAfter.blResp;
} else {
//Или расскажем об ошибке
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
}
} else { } else {
//Или расскажем об ошибке prms.queue.blResp = new Buffer(serverResp.toString());
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
} }
} else { } else {
prms.queue.blResp = new Buffer(serverResp.toString()); prms.queue.blResp = new Buffer(serverResp.toString());