dexter has uploaded this change for review.
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).
To view, visit change 42952. To unsubscribe, or for help writing mail filters, visit settings.