- lists:filter(fun(X) -> lists:member(X, L1) end, L2).
-
-
-% Attend qu'au moins un nouveau message arrive, function bloquante.
-% Renvoie un tuple {C, M} où C est une liste de numéro de conversation auquel appartient M et M l'Id du nouveau message
-attends_nouveaux_messages() ->
- case mnesia:subscribe({table, minichat, simple}) of
- {error, _} = E -> E;
- _ ->
- %{ok, F} = file:open("/tmp/log_euphorik_" ++ pid_to_list(self()) ++ ".txt", [write]),
- %io:format(F, "Test2~n", []),
- attends_nouveaux_messages2()
- end.
-attends_nouveaux_messages2() ->
- %io:format(F, "En attente d'un message !~n", []),
- receive % attente d'un post
- {mnesia_table_event, {write, _, _}} ->
- mnesia:unsubscribe({table, minichat, simple});
- %io:format(F, "Debloquage !~n", []),
- %file:close(F);
- %~ {tcp_closed, _} ->
- %~ mnesia:unsubscribe({table, minichat, simple});
- _ ->
- %io:format(F, "~p~n", [M]),
- attends_nouveaux_messages2()
- % 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 ->
- mnesia:unsubscribe({table, minichat, simple})
- end.
-
-
-
-
-
\ No newline at end of file