1<erl module=sample_mod>
2-compile(export_all).
3
4out(A) ->
5    Peer = case yaws_api:get_sslsocket(A#arg.clisock) of
6               {ok, SslSocket} ->
7                   ssl:peername(SslSocket);
8               _ ->
9                   inet:peername(A#arg.clisock)
10           end,
11
12    {ok,{IP,_}} = Peer,
13    A2=A#arg{state = [{ip, IP}]},
14    yaws_rpc:handler_session(A2, {?MODULE, counter}).
15
16
17
18counter([{ip, IP}] = _State, {call, errortest, Value} = _Request, Session) ->
19    io:format("Request = ~p~n", [_Request]),
20    { false, { error, "Expected failure" } };
21
22counter([{ip, IP}] = _State, {call, test1, Value} = _Request, Session) ->
23    io:format("Request = ~p~n", [_Request]),
24    IPStr = io_lib:format("Client ip is  ~p~n" , [ IP ]),
25    OldSession = io_lib:format("Request is: ~p~nOld session value "
26                               "is ~p~n", [ _Request, Session ]),
27
28    case Session of
29        undefined -> % create new session
30            NewSession = 0;
31        10 ->        % reset session after reaching 10
32            NewSession = undefined;
33        N ->
34            NewSession = N + 1
35    end,
36
37    NewVal = io_lib:format("New session value is ~p ~n", [ NewSession ]),
38    Str = lists:flatten([IPStr,OldSession,NewVal]),
39    {true, 0, NewSession, {response,  Str }}.
40
41
42</erl>
43