dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/onomondo-eim/+/42952?usp=email )
Change subject: esipa_asn1_handler: use eimTransactionId in EimPackageResultResponseError ......................................................................
esipa_asn1_handler: use eimTransactionId in EimPackageResultResponseError
EimPackageResultResponseError contains an eimTransactionId, let's use this eimTransactionId and add a dedicated handler function for the EimPackageResultResponseError to esipa_asn1_handler_utils
Change-Id: Iadd852a7531f180618cf12b314170ceea3f97615 Related: SYS#8100 --- M src/esipa_asn1_handler.erl M src/esipa_asn1_handler_utils.erl 2 files changed, 13 insertions(+), 6 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/onomondo-eim refs/changes/52/42952/1
diff --git a/src/esipa_asn1_handler.erl b/src/esipa_asn1_handler.erl index 943c8a8..e1e89b3 100644 --- a/src/esipa_asn1_handler.erl +++ b/src/esipa_asn1_handler.erl @@ -390,11 +390,9 @@ % not support. throw("unsuppported message type "profileDownloadTriggerResult""); {eimPackageResultResponseError, EimPackageResultResponseError} -> - EimPackageResultErrorCode = maps:get( - eimPackageResultErrorCode, EimPackageResultResponseError - ), - Outcome = [{[{eimPackageError, EimPackageResultErrorCode}]}], - ok = mnesia_db_work:finish(Pid, Outcome, EsipaReq) + ok = esipa_asn1_handler_utils:handle_eimPackageResultResponseError( + Pid, EimPackageResultResponseError, EsipaReq + ) end, {provideEimPackageResultResponse, {emptyResponse, #{}}}; %Unsupported request diff --git a/src/esipa_asn1_handler_utils.erl b/src/esipa_asn1_handler_utils.erl index d350116..2ef836d 100644 --- a/src/esipa_asn1_handler_utils.erl +++ b/src/esipa_asn1_handler_utils.erl @@ -6,7 +6,7 @@
-module(esipa_asn1_handler_utils).
--export([handle_euiccPackageResult/3, handle_ipaEuiccDataResponse/3]). +-export([handle_euiccPackageResult/3, handle_ipaEuiccDataResponse/3, handle_eimPackageResultResponseError/3]).
eimTransactionId_from_euiccPackageResult(EuiccPackageResult) -> case EuiccPackageResult of @@ -121,3 +121,12 @@
Outcome = esipa_rest_utils:ipaEuiccDataResponse_to_outcome(IpaEuiccDataResponse), mnesia_db_work:finish(Pid, Outcome, Debuginfo). + +% Handle an EimPackageResultResponseError, this includes handling of the work items in mnesia_db and the generation of +% an appropriate REST outcome for the REST API. +handle_eimPackageResultResponseError(Pid, EimPackageResultResponseError, Debuginfo) -> + EimTransactionId = maps:get(eimTransactionId, EimPackageResultResponseError), + {_, _, _} = mnesia_db_work:pickup(Pid, EimTransactionId), + EimPackageResultErrorCode = maps:get(eimPackageResultErrorCode, EimPackageResultResponseError), + Outcome = [{[{eimPackageError, EimPackageResultErrorCode}]}], + mnesia_db_work:finish(Pid, Outcome, Debuginfo).