dexter submitted this change.
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, 17 insertions(+), 6 deletions(-)
diff --git a/src/esipa_asn1_handler.erl b/src/esipa_asn1_handler.erl
index 867a326..e3a6abf 100644
--- a/src/esipa_asn1_handler.erl
+++ b/src/esipa_asn1_handler.erl
@@ -396,11 +396,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 9db1f41..d7927cb 100644
--- a/src/esipa_asn1_handler_utils.erl
+++ b/src/esipa_asn1_handler_utils.erl
@@ -6,7 +6,11 @@
-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
@@ -123,3 +127,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).
To view, visit change 42952. To unsubscribe, or for help writing mail filters, visit settings.