laforge submitted this change.
pfcp_peer: add fetch_info/0
This is useful for introspection and the upcoming REST interface.
Change-Id: I3fdcf7f6daac09a8c523826995a610c04f5a327b
---
M src/pfcp_peer.erl
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/src/pfcp_peer.erl b/src/pfcp_peer.erl
index efcf0d0..f6e9c7d 100644
--- a/src/pfcp_peer.erl
+++ b/src/pfcp_peer.erl
@@ -48,6 +48,7 @@
session_establish_req/3,
session_modify_req/3,
session_delete_req/1,
+ fetch_info/0,
shutdown/0]).
-include_lib("kernel/include/logger.hrl").
@@ -69,7 +70,14 @@
-type pfcp_msg() :: {pfcp_msg_type(), pfcp_ies()}.
-type pfcp_pdu() :: #pfcp{}.
--export_type([pfcp_session_rsp/0,
+-type peer_info() :: #{state := atom(),
+ laddr := inet:ip_address(),
+ raddr := inet:ip_address(),
+ lrts := pos_integer(),
+ rrts => pos_integer()}.
+
+-export_type([peer_info/0,
+ pfcp_session_rsp/0,
pfcp_msg_type/0,
pfcp_seq_nr/0,
pfcp_seid/0,
@@ -139,6 +147,11 @@
gen_statem:call(?MODULE, {?FUNCTION_NAME, SEID}).
+-spec fetch_info() -> peer_info().
+fetch_info() ->
+ gen_statem:call(?MODULE, ?FUNCTION_NAME).
+
+
shutdown() ->
gen_statem:stop(?MODULE).
@@ -338,6 +351,18 @@
S1 = registry_del({Pid, Ref}, S0),
{keep_state, S1};
+handle_event(State,
+ {call, From}, fetch_info,
+ #peer_state{} = S) ->
+ Info = #{state => State,
+ laddr => S#peer_state.loc_addr,
+ raddr => S#peer_state.rem_addr,
+ lrts => S#peer_state.loc_rts,
+ rrts => S#peer_state.rem_rts},
+ %% omit props with Value =:= undefined
+ Reply = maps:filter(fun(_K, V) -> V =/= undefined end, Info),
+ {keep_state_and_data, {reply, From, Reply}};
+
handle_event(State, Event, EventData, S) ->
?LOG_ERROR("Unexpected event ~p in state ~p: ~p", [Event, State, EventData]),
{keep_state, S}.
To view, visit change 40902. To unsubscribe, or for help writing mail filters, visit settings.