-
-
-% Ecoute les événements de modification d'une table.
-% @spec subscribe(atom(), integer()) -> ok | erreur
-% Obsolète
-%~ subscribe(_Table, 0) ->
- %~ erreur;
-%~ subscribe(Table, C) ->
- %~ case mnesia:subscribe({table, Table, simple}) of
- %~ {error, {not_active_local, Table}} ->
- %~ mnesia:add_table_copy(minichat, node(), ram_copies),
- %~ subscribe(Table, C - 1);
- %~ {error, _}->
- %~ erreur;
- %~ _ ->
- %~ ok
- %~ end.
-
-
-% Arrête d'écouter les modifications d'une table.
-% @spec unsubscribe(atom()) -> term()
-% Obsolète
-%~ unsubscribe(Table) ->
- %~ mnesia:unsubscribe({table, Table, simple}).
-
-
-% Attend qu'un nouveau message arrive, function bloquante.
-% Renvoie le nouveau message.
-% Obsolète
-% @spec attend_nouveau_message() -> #minichat | timeout
-%~ attend_nouveau_message() ->
- %~ receive % attente d'un post
- %~ {mnesia_table_event, {write, Message, _}} ->
- %~ Message;
- %~ %file:close(F);
- %~ {tcp_closed, _} ->
- %~ mnesia:unsubscribe({table, minichat, simple});
- %~ _ ->
- %~ attend_nouveau_message()
- % 60 minutes de timeout (le cas ou il n'y a que des consultations et jamais de post)
- % Après 60 minutes de connexion, le client doit donc reétablir une connexion
- % TODO : pour être mieux : quand le socket se ferme alors un message devrait être envoyé et débloquer ce receive (demande en cours sur la mailing list de yaws)
- %~ after 1000 * 60 * 60 ->
- %~ timeout
- %~ end.