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

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);
}
//Проверяем структуру ответа функции предобработки
let sCheckResult = validateObject(
resBefore,
objInQueueSchema.InQueueProcessorFnBefore,
"Результат функции предобработки входящего сообщения"
);
//Если структура ответа в норме
if (!sCheckResult) {
//Выставим статус сообщению очереди - исполнено сервером приложений
q = await this.dbConn.setQueueState({
nQueueId: q.nId,
nExecState: objQueueSchema.NQUEUE_EXEC_STATE_APP_OK
});
//Фиксируем успех исполнения
if (resBefore.blMsg) {
q = await this.dbConn.setQueueAppSrvResult({
if (resBefore) {
let sCheckResult = validateObject(
resBefore,
objInQueueSchema.InQueueProcessorFnBefore,
"Результат функции предобработки входящего сообщения"
);
//Если структура ответа в норме
if (!sCheckResult) {
//Выставим статус сообщению очереди - исполнено сервером приложений
q = await this.dbConn.setQueueState({
nQueueId: q.nId,
blMsg: resBefore.blMsg,
blResp: null
nExecState: objQueueSchema.NQUEUE_EXEC_STATE_APP_OK
});
//Фиксируем успех исполнения
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);
}
//Проверяем структуру ответа функции предобработки
let sCheckResult = validateObject(
resAfter,
objInQueueSchema.InQueueProcessorFnAfter,
"Результат функции постобработки входящего сообщения"
);
//Если структура ответа в норме
if (!sCheckResult) {
//Выставим статус сообщению очереди - исполнено сервером приложений
q = await this.dbConn.setQueueState({
nQueueId: q.nId,
nExecState: objQueueSchema.NQUEUE_EXEC_STATE_APP_OK
});
//Фиксируем успех исполнения
q = await this.dbConn.setQueueAppSrvResult({
nQueueId: q.nId,
blMsg: q.blMsg,
blResp: resAfter.blResp
});
} else {
//Или расскажем об ошибке
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
if (resAfter) {
let sCheckResult = validateObject(
resAfter,
objInQueueSchema.InQueueProcessorFnAfter,
"Результат функции постобработки входящего сообщения"
);
//Если структура ответа в норме
if (!sCheckResult) {
//Выставим статус сообщению очереди - исполнено сервером приложений
q = await this.dbConn.setQueueState({
nQueueId: q.nId,
nExecState: objQueueSchema.NQUEUE_EXEC_STATE_APP_OK
});
//Фиксируем успех исполнения
q = await this.dbConn.setQueueAppSrvResult({
nQueueId: q.nId,
blMsg: q.blMsg,
blResp: resAfter.blResp
});
} else {
//Или расскажем об ошибке
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);
}
//Проверяем структуру ответа функции предобработки
let sCheckResult = validateObject(
resBefore,
objOutQueueProcessorSchema.OutQueueProcessorFnBefore,
"Результат функции предобработки исходящего сообщения"
);
//Если структура ответа в норме
if (!sCheckResult) {
//Применим её
options = _.cloneDeep(resBefore.options);
if (resBefore.blMsg) prms.queue.blMsg = resBefore.blMsg;
} else {
//Или расскажем об ошибке
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
if (resBefore) {
let sCheckResult = validateObject(
resBefore,
objOutQueueProcessorSchema.OutQueueProcessorFnBefore,
"Результат функции предобработки исходящего сообщения"
);
//Если структура ответа в норме
if (!sCheckResult) {
//Применим её
options = _.cloneDeep(resBefore.options);
if (resBefore.blMsg) prms.queue.blMsg = resBefore.blMsg;
} else {
//Или расскажем об ошибке
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);
}
//Проверяем структуру ответа функции предобработки
let sCheckResult = validateObject(
resAfter,
objOutQueueProcessorSchema.OutQueueProcessorFnAfter,
"Результат функции постобработки исходящего сообщения"
);
//Если структура ответа в норме
if (!sCheckResult) {
//Применим её
prms.queue.blResp = resAfter.blResp;
if (resAfter) {
let sCheckResult = validateObject(
resAfter,
objOutQueueProcessorSchema.OutQueueProcessorFnAfter,
"Результат функции постобработки исходящего сообщения"
);
//Если структура ответа в норме
if (!sCheckResult) {
//Применим её
prms.queue.blResp = resAfter.blResp;
} else {
//Или расскажем об ошибке
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
}
} else {
//Или расскажем об ошибке
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
prms.queue.blResp = new Buffer(serverResp.toString());
}
} else {
prms.queue.blResp = new Buffer(serverResp.toString());