X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=modules%2Ferl%2Feuphorik_daemon.erl;h=190458e203d977bbb4d7d92a3164b2e657616671;hp=548eab1232e4dee2bbc9ee172b4fc3315f0af1e2;hb=5d9992368bb386d2e606ae037c5478fe10ac70e8;hpb=7ade6a3495cd5c74c964df5ed794e110e770ed9d diff --git a/modules/erl/euphorik_daemon.erl b/modules/erl/euphorik_daemon.erl index 548eab1..190458e 100755 --- a/modules/erl/euphorik_daemon.erl +++ b/modules/erl/euphorik_daemon.erl @@ -15,15 +15,13 @@ % % 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 % - rechargement des modules lors d'une mise en production -% Date : 05.11.2007 -% @author G.Burri -module(euphorik_daemon). +-author("Greg Burri "). -export([start/1, reload_euphorik/0, loop/0]). -include("../include/euphorik_defines.hrl"). @@ -32,37 +30,21 @@ start(_A) -> register(euphorik_daemon, self()), loop(). - - + + loop() -> - % on attend une minute de plus pour prevenir une dérive négative (ce qui pourrait engendrer une double élection) receive - switch -> % permet de substituer le code du process par un nouveau code, voir reload_euphorik - euphorik_daemon:loop() - after 1000 * (trunc(temps_prochaine_election() + 60)) -> - euphorik_bd:elire_troll(), + switch -> % To reload a new code, see 'reload_euphorik/0'. euphorik_daemon:loop() end. - -% 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'élection) 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) + c:l(M) % (purge & load) end, [ euphorik_common, @@ -70,11 +52,10 @@ reload_euphorik() -> euphorik_protocole, euphorik_requests, euphorik_bd, - euphorik_bd_update, + euphorik_bd_admin, euphorik_daemon ] ), % changement du code du daemon euphorik_daemon ! switch, ok. - \ No newline at end of file