aboutsummaryrefslogtreecommitdiffstats
path: root/lib/sasl/doc/src/rel
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sasl/doc/src/rel')
-rw-r--r--lib/sasl/doc/src/rel/bar.1.erl17
-rw-r--r--lib/sasl/doc/src/rel/bar.2.erl13
-rw-r--r--lib/sasl/doc/src/rel/ge_h.1.erl28
-rw-r--r--lib/sasl/doc/src/rel/ge_h.2.erl31
-rw-r--r--lib/sasl/doc/src/rel/gs1.1.erl30
-rw-r--r--lib/sasl/doc/src/rel/gs1.2.erl35
-rw-r--r--lib/sasl/doc/src/rel/gs1.3.erl36
-rw-r--r--lib/sasl/doc/src/rel/gs2.1.erl31
-rw-r--r--lib/sasl/doc/src/rel/gs2.2.erl38
-rw-r--r--lib/sasl/doc/src/rel/lists2.1.erl8
-rw-r--r--lib/sasl/doc/src/rel/lists2.2.erl13
-rw-r--r--lib/sasl/doc/src/rel/portc.1.erl31
-rw-r--r--lib/sasl/doc/src/rel/portc.2.erl34
-rw-r--r--lib/sasl/doc/src/rel/sp.1.erl46
-rw-r--r--lib/sasl/doc/src/rel/sp.2.erl58
-rw-r--r--lib/sasl/doc/src/rel/sup.1.erl11
-rw-r--r--lib/sasl/doc/src/rel/sup.2.erl10
17 files changed, 470 insertions, 0 deletions
diff --git a/lib/sasl/doc/src/rel/bar.1.erl b/lib/sasl/doc/src/rel/bar.1.erl
new file mode 100644
index 0000000000..610fc4919e
--- /dev/null
+++ b/lib/sasl/doc/src/rel/bar.1.erl
@@ -0,0 +1,17 @@
+-module(bar).
+-vsn(1).
+
+-export([simple/1, complicated_sum/1]).
+
+simple(X) ->
+ case lists2:assoc(simple, X) of
+ {ok, Val} -> Val;
+ false -> false
+ end.
+
+complicated_sum([X, Y, Z]) -> cs(X, Y, Z).
+
+cs([HX | TX], [HY | TY], [HZ | TZ]) ->
+ NewRes = cs(TX, TY, TZ),
+ [HX + HY + HZ | NewRes];
+cs([], [], []) -> [].
diff --git a/lib/sasl/doc/src/rel/bar.2.erl b/lib/sasl/doc/src/rel/bar.2.erl
new file mode 100644
index 0000000000..a831316874
--- /dev/null
+++ b/lib/sasl/doc/src/rel/bar.2.erl
@@ -0,0 +1,13 @@
+-module(bar).
+-vsn(2).
+
+-export([simple/1, complicated_sum/1]).
+
+simple(X) ->
+ case lists2:assoc(simple, X) of
+ {ok, Val} -> Val;
+ false -> false
+ end.
+
+complicated_sum(X) ->
+ lists2:multi_map(fun(A,B,C) -> A+B+C end, X).
diff --git a/lib/sasl/doc/src/rel/ge_h.1.erl b/lib/sasl/doc/src/rel/ge_h.1.erl
new file mode 100644
index 0000000000..ac2d3b3e5f
--- /dev/null
+++ b/lib/sasl/doc/src/rel/ge_h.1.erl
@@ -0,0 +1,28 @@
+-module(ge_h).
+-vsn(1).
+-behaviour(gen_event).
+
+-export([get_events/1]).
+-export([init/1, handle_event/2, handle_call/2, handle_info/2,
+ terminate/2, code_change/3]).
+
+get_events(Mgr) ->
+ gen_event:call(Mgr, ge_h, get_events).
+
+init(_) -> {ok, undefined}.
+
+handle_event(Event, _LastEvent) ->
+ {ok, Event}.
+
+handle_call(get_events, LastEvent) ->
+ {ok, [LastEvent], LastEvent}.
+
+handle_info(Info, LastEvent) ->
+ {ok, LastEvent}.
+
+terminate(Arg, LastEvent) ->
+ ok.
+
+code_change(_OldVsn, LastEvent, _Extra) ->
+ {ok, LastEvent}.
+
diff --git a/lib/sasl/doc/src/rel/ge_h.2.erl b/lib/sasl/doc/src/rel/ge_h.2.erl
new file mode 100644
index 0000000000..837338e399
--- /dev/null
+++ b/lib/sasl/doc/src/rel/ge_h.2.erl
@@ -0,0 +1,31 @@
+-module(ge_h).
+-vsn(2).
+-behaviour(gen_event).
+
+-export([get_events/1]).
+-export([init/1, handle_event/2, handle_call/2, handle_info/2,
+ terminate/2, code_change/3]).
+
+get_events(Mgr) ->
+ gen_event:call(Mgr, ge_h, get_events).
+
+init(_) -> {ok, []}.
+
+handle_event(Event, []) ->
+ {ok, [Event]};
+handle_event(Event, [Event1 | _]) ->
+ {ok, [Event, Event1]}.
+
+handle_call(get_events, Events) ->
+ Events.
+
+handle_info(Info, Events) ->
+ {ok, Events}.
+
+terminate(Arg, Events) ->
+ ok.
+
+code_change(1, undefined, _Extra) ->
+ {ok, []};
+code_change(1, LastEvent, _Extra) ->
+ {ok, [LastEvent]}.
diff --git a/lib/sasl/doc/src/rel/gs1.1.erl b/lib/sasl/doc/src/rel/gs1.1.erl
new file mode 100644
index 0000000000..b85ea45857
--- /dev/null
+++ b/lib/sasl/doc/src/rel/gs1.1.erl
@@ -0,0 +1,30 @@
+-module(gs1).
+-vsn(1).
+-behaviour(gen_server).
+
+-export([get_data/0]).
+-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
+ terminate/2, code_change/3]).
+
+-record(state, {data}).
+
+get_data() ->
+ gen_server:call(gs1, get_data).
+
+init([Data]) ->
+ {ok, #state{data = Data}}.
+
+handle_call(get_data, _From, State) ->
+ {reply, {ok, State#state.data}, State}.
+
+handle_cast(_Request, State) ->
+ {noreply, State}.
+
+handle_info(_Info, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
+
+code_change(_OldVsn, State, _Extra) ->
+ {ok, State}.
diff --git a/lib/sasl/doc/src/rel/gs1.2.erl b/lib/sasl/doc/src/rel/gs1.2.erl
new file mode 100644
index 0000000000..8391713c6d
--- /dev/null
+++ b/lib/sasl/doc/src/rel/gs1.2.erl
@@ -0,0 +1,35 @@
+-module(gs1).
+-vsn(2).
+-behaviour(gen_server).
+
+-export([get_data/0, get_time/0]).
+-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
+ terminate/2, code_change/3]).
+
+-record(state, {data, time}).
+
+get_data() ->
+ gen_server:call(gs1, get_data).
+
+get_time() ->
+ gen_server:call(gs1, get_time).
+
+init([Data]) ->
+ {ok, #state{data = Data, time = erlang:time()}}.
+
+handle_call(get_data, _From, State) ->
+ {reply, {ok, State#state.data}, State};
+handle_call(get_time, _From, State) ->
+ {reply, {ok, State#state.time}, State}.
+
+handle_cast(_Request, State) ->
+ {noreply, State}.
+
+handle_info(_Info, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
+
+code_change(1, {state, Data}, _Extra) ->
+ {ok, #state{data = Data, time = erlang:time()}}.
diff --git a/lib/sasl/doc/src/rel/gs1.3.erl b/lib/sasl/doc/src/rel/gs1.3.erl
new file mode 100644
index 0000000000..2d4c0870b6
--- /dev/null
+++ b/lib/sasl/doc/src/rel/gs1.3.erl
@@ -0,0 +1,36 @@
+-module(gs1).
+-vsn(2).
+-behaviour(gen_server).
+
+-export([get_data/0, get_time/0]).
+-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
+ terminate/2, code_change/3]).
+
+-record(state, {data, time}).
+
+get_data() ->
+ gen_server:call(gs1, get_data).
+get_time() ->
+ gen_server:call(gs1, get_time).
+
+init([Data]) ->
+ {ok, #state{data = Data, time = erlang:time()}}.
+
+handle_call(get_data, _From, State) ->
+ {reply, {ok, State#state.data}, State};
+handle_call(get_time, _From, State) ->
+ {reply, {ok, State#state.time}, State}.
+
+handle_cast(_Request, State) ->
+ {noreply, State}.
+
+handle_info(_Info, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
+
+code_change(1, {state, Data}, _Extra) ->
+ {ok, #state{data = Data, time = erlang:time()}};
+code_change({down, 1}, #state{data = Data}, _Extra) ->
+ {ok, {state, Data}}.
diff --git a/lib/sasl/doc/src/rel/gs2.1.erl b/lib/sasl/doc/src/rel/gs2.1.erl
new file mode 100644
index 0000000000..1b06a9551f
--- /dev/null
+++ b/lib/sasl/doc/src/rel/gs2.1.erl
@@ -0,0 +1,31 @@
+-module(gs2).
+-vsn(1).
+-behaviour(gen_server).
+
+-export([is_operation_ok/1]).
+-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
+ terminate/2, code_change/3]).
+
+is_operation_ok(Op) ->
+ gen_server:call(gs2, {is_operation_ok, Op}).
+
+init([Data]) ->
+ {ok, []}.
+
+handle_call({is_operation_ok, Op}, _From, State) ->
+ Data = gs1:get_data(),
+ Reply = lists2:assoc(Op, Data),
+ {reply, Reply, State}.
+
+handle_cast(_Request, State) ->
+ {noreply, State}.
+
+handle_info(_Info, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
+
+code_change(_OldVsn, State, _Extra) ->
+ {ok, State}.
+
diff --git a/lib/sasl/doc/src/rel/gs2.2.erl b/lib/sasl/doc/src/rel/gs2.2.erl
new file mode 100644
index 0000000000..3248ea43bb
--- /dev/null
+++ b/lib/sasl/doc/src/rel/gs2.2.erl
@@ -0,0 +1,38 @@
+-module(gs2).
+-vsn(2).
+-behaviour(gen_server).
+
+-export([is_operation_ok/1]).
+-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
+ terminate/2, code_change/3]).
+
+is_operation_ok(Op) ->
+ gen_server:call(gs2, {is_operation_ok, Op}).
+
+init([Data]) ->
+ {ok, []}.
+
+handle_call({is_operation_ok, Op}, _From, State) ->
+ Data = gs1:get_data(),
+ Time = gs1:get_time(),
+ Reply = do_things(lists2:assoc(Op, Data), Time),
+ {reply, Reply, State}.
+
+handle_cast(_Request, State) ->
+ {noreply, State}.
+
+handle_info(_Info, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
+
+code_change(_OldVsn, State, _Extra) ->
+ {ok, State}.
+
+do_things({ok, Val}, Time) ->
+ Val;
+do_things(false, Time) ->
+ {false, Time}.
+
+
diff --git a/lib/sasl/doc/src/rel/lists2.1.erl b/lib/sasl/doc/src/rel/lists2.1.erl
new file mode 100644
index 0000000000..4afe3b5041
--- /dev/null
+++ b/lib/sasl/doc/src/rel/lists2.1.erl
@@ -0,0 +1,8 @@
+-module(lists2).
+-vsn(1).
+
+-export([assoc/2]).
+
+assoc(Key, [{Key, Val} | _]) -> {ok, Val};
+assoc(Key, [H | T]) -> assoc(Key, T);
+assoc(Key, []) -> false.
diff --git a/lib/sasl/doc/src/rel/lists2.2.erl b/lib/sasl/doc/src/rel/lists2.2.erl
new file mode 100644
index 0000000000..734bc36bbb
--- /dev/null
+++ b/lib/sasl/doc/src/rel/lists2.2.erl
@@ -0,0 +1,13 @@
+-module(lists2).
+-vsn(2).
+
+-export([assoc/2, multi_map/2]).
+
+assoc(Key, [{Key, Val} | _]) -> {ok, Val};
+assoc(Key, [H | T]) -> assoc(Key, T);
+assoc(Key, []) -> false.
+
+multi_map(Func, [[] | ListOfLists]) -> [];
+multi_map(Func, ListOfLists) ->
+ [apply(Func, lists:map({erlang, hd}, ListOfLists)) |
+ multi_map(Func, lists:map({erlang, tl}, ListOfLists))].
diff --git a/lib/sasl/doc/src/rel/portc.1.erl b/lib/sasl/doc/src/rel/portc.1.erl
new file mode 100644
index 0000000000..0d387a4e5e
--- /dev/null
+++ b/lib/sasl/doc/src/rel/portc.1.erl
@@ -0,0 +1,31 @@
+-module(portc).
+-vsn(1).
+-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}}.
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}.
diff --git a/lib/sasl/doc/src/rel/sp.1.erl b/lib/sasl/doc/src/rel/sp.1.erl
new file mode 100644
index 0000000000..deb11286b1
--- /dev/null
+++ b/lib/sasl/doc/src/rel/sp.1.erl
@@ -0,0 +1,46 @@
+-module(sp).
+-vsn(1).
+
+-export([start/0, get_data/0]).
+-export([init/1, system_continue/3, system_terminate/4]).
+
+-record(state, {data}).
+
+start() ->
+ Pid = proc_lib:spawn_link(?MODULE, init, [self()]),
+ {ok, Pid}.
+
+get_data() ->
+ sp_server ! {self(), get_data},
+ receive
+ {sp_server, Data} -> Data
+ end.
+
+init(Parent) ->
+ register(sp_server, self()),
+ process_flag(trap_exit, true),
+ loop(#state{}, Parent).
+
+loop(State, Parent) ->
+ receive
+ {system, From, Request} ->
+ sys:handle_system_msg(Request, From, Parent, ?MODULE, [], State);
+ {'EXIT', Parent, Reason} ->
+ cleanup(State),
+ exit(Reason);
+ {From, get_data} ->
+ From ! {sp_server, State#state.data},
+ loop(State, Parent);
+ _Any ->
+ loop(State, Parent)
+ end.
+
+cleanup(State) -> ok.
+
+%% Here are the sys call back functions
+system_continue(Parent, _, State) ->
+ loop(State, Parent).
+
+system_terminate(Reason, Parent, _, State) ->
+ cleanup(State),
+ exit(Reason).
diff --git a/lib/sasl/doc/src/rel/sp.2.erl b/lib/sasl/doc/src/rel/sp.2.erl
new file mode 100644
index 0000000000..b2282f0610
--- /dev/null
+++ b/lib/sasl/doc/src/rel/sp.2.erl
@@ -0,0 +1,58 @@
+-module(sp).
+-vsn(2).
+
+-export([start/0, get_data/0, set_data/1]).
+-export([init/1, system_continue/3, system_terminate/4,
+ system_code_change/4]).
+
+-record(state, {data, last_pid}).
+
+start() ->
+ Pid = proc_lib:spawn_link(?MODULE, init, [self()]),
+ {ok, Pid}.
+
+get_data() ->
+ sp_server ! {self(), get_data},
+ receive
+ {sp_server, Data} -> Data
+ end.
+
+set_data(Data) ->
+ sp_server ! {self(), set_data, Data}.
+
+init(Parent) ->
+ register(sp_server, self()),
+ process_flag(trap_exit, true),
+ loop(#state{last_pid = no_one}, Parent).
+
+loop(State, Parent) ->
+ receive
+ {system, From, Request} ->
+ sys:handle_system_msg(Request, From, Parent,
+ ?MODULE, [], State);
+ {'EXIT', Parent, Reason} ->
+ cleanup(State),
+ exit(Reason);
+ {From, get_data} ->
+ From ! {sp_server, State#state.data},
+ loop(State, Parent);
+ {From, set_data, Data} ->
+ loop(State#state{data = Data, last_pid = From}, Parent);
+ _Any ->
+ loop(State, Parent)
+ end.
+
+cleanup(State) -> ok.
+
+%% Here are the sys call back functions
+system_continue(Parent, _, State) ->
+ loop(State, Parent).
+
+system_terminate(Reason, Parent, _, State) ->
+ cleanup(State),
+ exit(Reason).
+
+system_code_change({state, Data}, _Mod, 1, _Extra) ->
+ {ok, #state{data = Data, last_pid = no_one}};
+system_code_change(#state{data = Data}, _Mod, {down, 1}, _Extra) ->
+ {ok, {state, Data}}.
diff --git a/lib/sasl/doc/src/rel/sup.1.erl b/lib/sasl/doc/src/rel/sup.1.erl
new file mode 100644
index 0000000000..c73f1161b3
--- /dev/null
+++ b/lib/sasl/doc/src/rel/sup.1.erl
@@ -0,0 +1,11 @@
+-module(sup).
+-vsn(1).
+-behaviour(supervisor).
+-export([init/1]).
+
+init([]) ->
+ SupFlags = {one_for_one, 4, 3600},
+ Server = {my_server, {my_server, start_link, []},
+ permanent, 2000, worker, [my_server]},
+ GS1 = {gs1, {gs1, start_link, []}, permanent, 2000, worker, [gs1]},
+ {ok, {SupFlags, [Server, GS1]}}.
diff --git a/lib/sasl/doc/src/rel/sup.2.erl b/lib/sasl/doc/src/rel/sup.2.erl
new file mode 100644
index 0000000000..783da18f2f
--- /dev/null
+++ b/lib/sasl/doc/src/rel/sup.2.erl
@@ -0,0 +1,10 @@
+-module(sup).
+-vsn(2).
+-behaviour(supervisor).
+-export([init/1]).
+
+init([]) ->
+ SupFlags = {one_for_one, 4, 3600},
+ GS1 = {gs1, {gs1, start_link, []}, permanent, 2000, worker, [gs1]},
+ GS2 = {gs2, {gs2, start_link, []}, permanent, 2000, worker, [gs2]},
+ {ok, {SupFlags, [GS1, GS2]}}.