- ),
- mnesia:unsubscribe({table, minichat, simple}),
- Conversations_mises_en_forme
- end.
-
-
-% 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.
-% @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.