#include "/p/daemon/ch.h"#include "/p/daemon/uptime_master.h"
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 |
| void create | ( | ) |
Prototypen ///.
Funktionen ///.
Definiert in Zeile 22 der Datei uptime_master.c.
Benutzt reset().
00023 { 00024 seteuid(getuid(this_object())); 00025 reset(); 00026 }

| 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 }

| 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 }

| 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 }

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().
1.6.3