aboutsummaryrefslogtreecommitdiffstats
path: root/lib/sasl/doc/src/rel/portc.2.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sasl/doc/src/rel/portc.2.erl')
-rw-r--r--lib/sasl/doc/src/rel/portc.2.erl34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/sasl/doc/src/rel/portc.2.erl b/lib/sasl/doc/src/rel/portc.2.erl
new file mode 100644
index 0000000000..6711177f6a
--- /dev/null
+++ b/lib/sasl/doc/src/rel/portc.2.erl
@@ -0,0 +1,34 @@
+-module(portc).
+-vsn(2).
+-behaviour(gen_server).
+
+-export([get_data/0]).
+-export([init/1, handle_call/3, handle_info/2, code_change/3]).
+
+-record(state, {port, data}).
+
+get_data() -> gen_server:call(portc, get_data).
+
+init([]) ->
+ PortProg = code:priv_dir(foo) ++ "/bin/portc",
+ Port = open_port({spawn, PortProg}, [binary, {packet, 2}]),
+ {ok, #state{port = Port}}.
+
+handle_call(get_data, _From, State) ->
+ {reply, {ok, State#state.data}, State}.
+
+handle_info({Port, Cmd}, State) ->
+ NewState = do_cmd(Cmd, State),
+ {noreply, NewState}.
+
+code_change(_, State, change_port_only) ->
+ State#state.port ! close,
+ receive
+ {Port, closed} -> true
+ end,
+ NPortProg = code:priv_dir(foo) ++ "/bin/portc", % get new version
+ NPort = open_port({spawn, NPortProg}, [binary, {packet, 2}]),
+ {ok, State#state{port = NPort}};
+code_change(1, State, change_erl_only) ->
+ NState = transform_state(State),
+ {ok, NState}.