uptime_master.c-Dateireferenz

#include "/p/daemon/ch.h"
#include "/p/daemon/uptime_master.h"
Include-Abhängigkeitsdiagramm für uptime_master.c:

gehe zum Quellcode dieser Datei

Funktionen

void create ()
 Prototypen ///.
void reset ()
void SaveMaxUptime ()
mapping QuerMaxUptime ()
mapping QueryMaxUptime ()

Variablen

static int next_save_uptime
 Globale Variablen ///.
static int max_uptime_reached
static int last_record_boot

Dokumentation der Funktionen

void create (  ) 

Prototypen ///.

Funktionen ///.

Definiert in Zeile 22 der Datei uptime_master.c.

Benutzt reset().

00023 {
00024   seteuid(getuid(this_object()));
00025   reset();
00026 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

mapping QuerMaxUptime (  ) 
mapping QueryMaxUptime (  ) 

Definiert in Zeile 88 der Datei uptime_master.c.

Benutzt last_reboot_time() und MAX_UPTIME.

00089 {
00090   int t, tmp, max_boot, max_shut;
00091   string s;
00092 
00093   sscanf(read_file(MAX_UPTIME)||"0 0","%d %d",max_boot, max_shut);
00094 
00095   t=max_shut-max_boot;
00096 
00097   s="";
00098   if (t>=86400)
00099     s+=sprintf("%d Tag%s, ",tmp=t/86400,(tmp==1?"":"e"));
00100   if (t>=3600)
00101     s+=sprintf("%d Stunde%s, ",tmp=(t=t%86400)/3600,(tmp==1?"":"n"));
00102   if (t>60)
00103     s+=sprintf("%d Minute%s und ",tmp=(t=t%3600)/60,(tmp==1?"":"n"));
00104   s+=sprintf("%d Sekunde%s",t=t%60,(t==1?"":"n"));
00105 
00106   return (["beginn":max_boot, 
00107            "ende":max_shut, 
00108                    "naechster rekord":last_reboot_time()+(max_shut-max_boot), 
00109                    "rekord als string":s]);
00110 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

void reset ( void   ) 

Definiert in Zeile 28 der Datei uptime_master.c.

Benutzt call_out() und set_next_reset().

00029 {
00030   call_out("SaveMaxUptime",1);
00031   set_next_reset(300);
00032 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

void SaveMaxUptime (  ) 

Definiert in Zeile 35 der Datei uptime_master.c.

Benutzt CHMASTER, DEBUG, last_reboot_time(), last_record_boot, MAX_UPTIME, MSG_EMPTY, next_save_uptime und RECORD_CHANNEL.

00036 {
00037   int max_shut, max_boot;
00038   
00039   // Lohnt es, schon wieder zu pruefen?
00040   if (time()>next_save_uptime)
00041   {
00042     // Initialisieren
00043     if (next_save_uptime==0)
00044     {
00045       DEBUG("Masterinit");
00046       
00047       // Zeit berechnen, ab der ein Rekord aufgestellt ist.
00048       // Vorher braucht nixhts mehr geprueft werden
00049       sscanf(read_file(MAX_UPTIME)||"0 0","%d %d",last_record_boot, max_shut);
00050       next_save_uptime=last_reboot_time()+(max_shut-last_record_boot)+1; 
00051       
00052     } else {
00053       DEBUG("Rekord neu speichern.");
00054                     
00055       // Neuen Rekord in Datei schreiben.
00056       catch(rm(MAX_UPTIME);publish);
00057       write_file(MAX_UPTIME, last_reboot_time()+" "+time());
00058       
00059       // Jetzt checken, ob die Uptime grade geknackt wurde ...
00060       // Wenn ja, dann eine Meldung an den Master
00061       if(last_reboot_time()!=last_record_boot)
00062       {
00063                 DEBUG("Rekordmeldung. MB:"+last_record_boot+" LU:"+last_reboot_time());
00064 
00065                 // Nur einmal pro Rekord Uptime melden ...
00066                 last_record_boot=last_reboot_time();
00067 
00068                 // Hurraaah :)
00069         CHMASTER->join(RECORD_CHANNEL,this_object());
00070                 CHMASTER->send(RECORD_CHANNEL,this_object(),
00071                 "[<MasteR>:Lars] Wow, eine Rekord-Uptime.\n"
00072                 "[<MasteR>:Merlin] Das erlebt man auch nicht alle Tage ...\n"
00073                 "[<MasteR>:Der GameDriver] Dann wird es wohl Zeit fuer einen Reboot, oder?\n"
00074                 "[<MasteR>:Merlin] Faules Stueck, arbeite weiter!\n"
00075                 "[<MasteR>:Der GameDriver] Och menno!",
00076                   MSG_EMPTY);
00077                 CHMASTER->leave(RECORD_CHANNEL,this_object());
00078       }
00079     }
00080   }
00081 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:


Variablen-Dokumentation

int last_record_boot [static]

Definiert in Zeile 18 der Datei uptime_master.c.

Wird benutzt von SaveMaxUptime().

int max_uptime_reached [static]

Definiert in Zeile 17 der Datei uptime_master.c.

int next_save_uptime [static]

Globale Variablen ///.

Definiert in Zeile 16 der Datei uptime_master.c.

Wird benutzt von SaveMaxUptime().

Erzeugt am Thu Jun 3 14:40:49 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3