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