X-Git-Url: http://git.euphorik.ch/index.cgi?a=blobdiff_plain;ds=inline;f=modules%2Ferl%2Feuphorik_daemon.erl;h=190458e203d977bbb4d7d92a3164b2e657616671;hb=HEAD;hp=1813e0e82cc3c9d4667fdaefbd70b14c63f44e93;hpb=650c44a784cabc8a1f2bd1daa7e5e61ccf74ca6f;p=euphorik.git
diff --git a/modules/erl/euphorik_daemon.erl b/modules/erl/euphorik_daemon.erl
index 1813e0e..190458e 100755
--- a/modules/erl/euphorik_daemon.erl
+++ b/modules/erl/euphorik_daemon.erl
@@ -15,49 +15,47 @@
%
% You should have received a copy of the GNU General Public License
% along with Euphorik. If not, see .
-%
-% Module tournant en background s'occupant periodiquement de certaines tâches :
-% - sélection du prochain troll chaque semaine
-% Date : 05.11.2007
-% @author G.Burri
+%
+% Module tournant en background s'occupant periodiquement de certaines tâches :
+% - rechargement des modules lors d'une mise en production
+
+
+-module(euphorik_daemon).
+-author("Greg Burri ").
+-export([start/1, reload_euphorik/0, loop/0]).
+-include("../include/euphorik_defines.hrl").
--module(euphorik_daemon).
--export([start/1, reload_euphorik/0]).
--include("../include/euphorik_defines.hrl").
-
-
-% Démarre le démon
+% Démarre le démon
start(_A) ->
- loop().
-
-
-loop() ->
- % on attend une minute de plus pour prevenir une dérive négative
- timer:sleep(1000 * trunc(temps_prochaine_election() + 60)),
- euphorik_bd:elire_troll(),
- euphorik_daemon:loop().
-
-
-% Renvoie le nombre de seconde qu'il reste jusque au prochain lundi à l'heure donnée (l'heure est sur 24heures)
-% 86400 est le nombre de seconde dans un jour
-temps_prochaine_election() ->
- {Date, {H,M,S}} = calendar:local_time(),
- Delta = (?JOUR_ELECTION_TROLL - 1) * 86400 + ?HEURE_ELECTION_TROLL * 60 * 60
- -((calendar:day_of_the_week(Date) - 1) * 86400 + H * 60 * 60 + M * 60 + S),
- % attention au cas où deux dates (maintenant et la date d'éction) ne se trouvent pas dans la même semaine.
- if Delta =< 0 -> Delta + 7 * 86400; true -> Delta end.
-
-
-% Recharge tous les modules euphorik.
-% Appelé lors d'une mise en prod.
-% TODO : récupérer les noms à partir des .beam dans /modules/ebin
-reload_euphorik() ->
- lists:foreach(
- fun(M) ->
- code:purge(M),
- code:load_file(M)
- end,
- [euphorik_minichat_conversation, euphorik_protocole, euphorik_requests, euphorik_bd, euphorik_daemon]
- ).
-
\ No newline at end of file
+ register(euphorik_daemon, self()),
+ loop().
+
+
+loop() ->
+ receive
+ switch -> % To reload a new code, see 'reload_euphorik/0'.
+ euphorik_daemon:loop()
+ end.
+
+% Recharge tous les modules euphorik.
+% Appelé lors d'une mise en prod.
+% TODO : récupérer les noms à partir des .beam dans /modules/ebin
+reload_euphorik() ->
+ lists:foreach(
+ fun(M) ->
+ c:l(M) % (purge & load)
+ end,
+ [
+ euphorik_common,
+ euphorik_minichat_conversation,
+ euphorik_protocole,
+ euphorik_requests,
+ euphorik_bd,
+ euphorik_bd_admin,
+ euphorik_daemon
+ ]
+ ),
+ % changement du code du daemon
+ euphorik_daemon ! switch,
+ ok.