pespin has uploaded this change for review. (
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36196?usp=email )
Change subject: Move spawn_wait_ret() to a new misc.erl file
......................................................................
Move spawn_wait_ret() to a new misc.erl file
It may be reused by other modules spawning process per message, like
gsup_server.erl.
Change-Id: I9777b73942e9dc672dd944a82045710b78893974
---
M src/epdg_gtpc_s2b.erl
A src/misc.erl
2 files changed, 68 insertions(+), 20 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-epdg refs/changes/96/36196/1
diff --git a/src/epdg_gtpc_s2b.erl b/src/epdg_gtpc_s2b.erl
index a8a42a2..dce038f 100644
--- a/src/epdg_gtpc_s2b.erl
+++ b/src/epdg_gtpc_s2b.erl
@@ -188,10 +188,10 @@
%% @callback gen_server
handle_info({udp, _Socket, IP, InPortNo, RxMsg}, State) ->
lager:debug("S2b: Rx from IP ~p port ~p: ~p~n", [IP, InPortNo, RxMsg]),
- spawn_wait_ret(fun() ->
- rx_udp(IP, InPortNo, RxMsg, State)
- end,
- {noreply, State});
+ misc:spawn_wait_ret(fun() ->
+ rx_udp(IP, InPortNo, RxMsg, State)
+ end,
+ {noreply, State});
handle_info(Info, State) ->
lager:info("S2b handle_info: ~p ~n", [Info]),
{noreply, State}.
@@ -378,22 +378,6 @@
connect(Address) ->
connect(?SVC_NAME, Address).
-%% Calls Fun on a spawned monitored process and returns Fun ret.
-%% If spawned process crashes, return DefaultRet.
-spawn_wait_ret(Fun, DefaultRet) ->
- MyPID=self(),
- {Pid, MRef} = spawn_monitor(fun() ->
- Ret = Fun(),
- MyPID ! {self(), Ret}
- end),
- receive
- {'DOWN', MRef, process, _, _Reason} ->
- DefaultRet;
- {Pid, Ret} ->
- erlang:demonitor(MRef, [flush]),
- Ret
- end.
-
rx_udp(IP, InPortNo, RxMsg, State) ->
Req = gtp_packet:decode(RxMsg),
lager:debug("S2b: Rx from IP ~p port ~p: ~p~n", [IP, InPortNo, Req]),
diff --git a/src/misc.erl b/src/misc.erl
new file mode 100644
index 0000000..fd85264
--- /dev/null
+++ b/src/misc.erl
@@ -0,0 +1,52 @@
+% Misc helpers
+% (C) 2023 by sysmocom
+%
+% All Rights Reserved
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU Affero General Public License as
+% published by the Free Software Foundation; either version 3 of the
+% License, or (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU Affero General Public License
+% along with this program. If not, see <http://www.gnu.org/licenses/>.
+%
+% Additional Permission under GNU AGPL version 3 section 7:
+%
+% If you modify this Program, or any covered work, by linking or
+% combining it with runtime libraries of Erlang/OTP as released by
+% Ericsson on
http://www.erlang.org (or a modified version of these
+% libraries), containing parts covered by the terms of the Erlang Public
+% License (
http://www.erlang.org/EPLICENSE), the licensors of this
+% Program grant you additional permission to convey the resulting work
+% without the need to license the runtime libraries of Erlang/OTP under
+% the GNU Affero General Public License. Corresponding Source for a
+% non-source form of such a combination shall include the source code
+% for the parts of the runtime libraries of Erlang/OTP used as well as
+% that of the covered work.
+%
+-module(misc).
+-author('Pau Espin Pedrol <pespin(a)sysmocom.de>')>').
+
+-export([spawn_wait_ret/2]).
+
+%% Calls Fun on a spawned monitored process and returns Fun ret.
+%% If spawned process crashes, return DefaultRet.
+spawn_wait_ret(Fun, DefaultRet) ->
+ MyPID=self(),
+ {Pid, MRef} = spawn_monitor(fun() ->
+ Ret = Fun(),
+ MyPID ! {self(), Ret}
+ end),
+ receive
+ {'DOWN', MRef, process, _, _Reason} ->
+ DefaultRet;
+ {Pid, Ret} ->
+ erlang:demonitor(MRef, [flush]),
+ Ret
+ end.
\ No newline at end of file
--
To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/36196?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: erlang/osmo-epdg
Gerrit-Branch: master
Gerrit-Change-Id: I9777b73942e9dc672dd944a82045710b78893974
Gerrit-Change-Number: 36196
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newchange