summaryrefslogtreecommitdiff
path: root/erlang/server.erl
diff options
context:
space:
mode:
authorGuillermo Ramos2012-05-11 00:49:36 +0200
committerGuillermo Ramos2012-05-11 00:49:36 +0200
commit5d8c20c0a91dbd58a1676581c4374ecb67e639a7 (patch)
tree15ef8efe0a214a088274c1db58408caeff29fdd2 /erlang/server.erl
parent67a898893884f229d64886a220ba422dd0d66e78 (diff)
download7l-5d8c20c0a91dbd58a1676581c4374ecb67e639a7.tar.gz
[Erlang] Día 3 (1/2)
Diffstat (limited to 'erlang/server.erl')
-rw-r--r--erlang/server.erl59
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().