diff options
author | Guillermo Ramos | 2012-05-11 00:49:36 +0200 |
---|---|---|
committer | Guillermo Ramos | 2012-05-11 00:49:36 +0200 |
commit | 5d8c20c0a91dbd58a1676581c4374ecb67e639a7 (patch) | |
tree | 15ef8efe0a214a088274c1db58408caeff29fdd2 /erlang/server.erl | |
parent | 67a898893884f229d64886a220ba422dd0d66e78 (diff) | |
download | 7l-5d8c20c0a91dbd58a1676581c4374ecb67e639a7.tar.gz |
[Erlang] Día 3 (1/2)
Diffstat (limited to 'erlang/server.erl')
-rw-r--r-- | erlang/server.erl | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/erlang/server.erl b/erlang/server.erl new file mode 100644 index 0000000..6769b68 --- /dev/null +++ b/erlang/server.erl @@ -0,0 +1,59 @@ +-module(server). +-behaviour(gen_server). + +-export([main/0]). +-export([start_link/0, stop/0]). +-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, + code_change/3]). + +%%============================================================================== +%% Server API +%%============================================================================== + +start_link() -> + Result = gen_server:start_link({local, server}, server, [], []), + io:fwrite("Server started.~n"), + Result. + +stop() -> + gen_server:cast(server, shutdown). + +message(Msg) -> + gen_server:cast(server, Msg). + + +%%============================================================================== +%% gen_server callbacks +%%============================================================================== + +init([]) -> + file:open("server_log.txt", [write]). + +handle_call(_Msg, _From, Fd) -> + {reply, ok, Fd}. + +handle_cast(shutdown, Fd) -> + {stop, normal, Fd}; + +handle_cast(Msg, Fd) -> + io:fwrite("Server writing into file: '~p'.~n", [Msg]), + io:format(Fd, "~w~n", [Msg]), + {noreply, Fd}. + +code_change(_OldVsn, Fd, _Extra) -> + {ok, Fd}. + +terminate(_Reason, Fd) -> + io:fwrite("Server is shutting down.~n"), + file:close(Fd), + ok. + +handle_info(_Info, Fd) -> + {noreply, Fd}. + +main() -> + start_link(), + message(hoola), + message(blrblrlb), + message(wakawaka), + stop(). |