Statistikdaemon fuer Skill-Attribute Der Daemon loggt SA-Modifier und schreibt sie von Zeit zu Zeit auf die Platte. Mehr ...
#include <defines.h>
gehe zum Quellcode dieser Datei
Klassen | |
| struct | log_entry_s |
| struct | log_buffer_s |
Makrodefinitionen | |
| #define | DEFAULT_BUFFER_LEN 200 |
| anfaengliche Groesse des Log-Puffers | |
| #define | BUFFERTHRESHOLD 150 |
| ab dieser Anzahl an Eintraegen wird im naechsten Backend-Zyklus vom Driver per Callout der Puffer weggeschrieben. | |
| #define | STATLOG "SASTATS" |
| Logfile fuer die Stats. | |
| #define | MAXLOGSIZE 3145728 |
| max. | |
| #define | DEBUG(x) |
| Outputs debug message to Maintainer, if Mainteiner is logged in. | |
Funktionen | |
| private string | FormatLogEntry (struct log_entry_s entry) |
| private void | WriteBuffer () |
| public void | LogModifier (object caster, string atrname, mixed value, int duration) |
| protected void | create () |
| varargs public int | remove (int silent) |
| void | reset () |
Variablen | |
| struct log_buffer_s | logbuf |
| speichert Logeintraege mit indiv. | |
Statistikdaemon fuer Skill-Attribute Der Daemon loggt SA-Modifier und schreibt sie von Zeit zu Zeit auf die Platte.
Definiert in Datei sastatd.c.
| #define BUFFERTHRESHOLD 150 |
| #define DEBUG | ( | x | ) |
if (find_player("zesstra"))\ tell_object(find_player("zesstra"),\ "EDBG: "+x+"\n")
Outputs debug message to Maintainer, if Mainteiner is logged in.
| #define DEFAULT_BUFFER_LEN 200 |
| protected void create | ( | ) |
| private string FormatLogEntry | ( | struct log_entry_s | entry | ) |
Definiert in Zeile 67 der Datei sastatd.c.
Benutzt log_entry_s::atrname, log_entry_s::caster, log_entry_s::duration, log_entry_s::liv, strftime(), log_entry_s::timestamp und log_entry_s::value.
00067 { 00068 return sprintf("[%s] %s, %s, %s, %s, %d\n", 00069 strftime("%d%m%y-%H%M%S",entry->timestamp), 00070 entry->liv, entry->caster, entry->atrname, 00071 entry->value, entry->duration); 00072 }

| public void LogModifier | ( | object | caster, | |
| string | atrname, | |||
| mixed | value, | |||
| int | duration | |||
| ) |
Definiert in Zeile 85 der Datei sastatd.c.
00086 { 00087 // nur Spieler sind interessant 00088 if (!query_once_interactive(previous_object())) 00089 return; 00090 00091 // sp um eins erhoehen und schauen, ob die Puffergroesse ueberschritten 00092 // wurde. Wenn ja, Puffer vergroessern. 00093 logbuf->sp++; 00094 if (logbuf->sp >= logbuf->bufferlen) { 00095 logbuf->buf = logbuf->buf + allocate(50); 00096 logbuf->bufferlen += 50; 00097 } 00098 // eintragen. Interessanterweise ist es tatsaechlich kein Problem, wenn 00099 // Structmember und lokale Variablen hier den gleichen Namen habem. ;-) 00100 logbuf->buf[logbuf->sp] = (<log_entry_s> 00101 timestamp : time(), 00102 liv : getuid(previous_object()), // nur Spieler 00103 caster : object_name(caster), 00104 atrname : atrname, 00105 value : to_string(value), // wegen (fluechtiger) Closures 00106 duration : duration ); 00107 // wegschreiben veranlassen 00108 if (logbuf->sp > BUFFERTHRESHOLD 00109 && find_call_out(#'WriteBuffer) == -1) 00110 call_out(#'WriteBuffer, 0); 00111 }
| varargs public int remove | ( | int | silent | ) |
| void reset | ( | void | ) |
Definiert in Zeile 124 der Datei sastatd.c.
00124 { 00125 // ggf. Puffer wegschreiben. 00126 if (logbuf->sp > BUFFERTHRESHOLD) 00127 WriteBuffer(); 00128 // ggf. sehr grosse Puffer verkleinern 00129 if (logbuf->bufferlen > DEFAULT_BUFFER_LEN * 2) { 00130 logbuf->buf = allocate(DEFAULT_BUFFER_LEN); 00131 logbuf->bufferlen = DEFAULT_BUFFER_LEN; 00132 logbuf->sp = -1; 00133 } 00134 }
| private void WriteBuffer | ( | ) |
Definiert in Zeile 74 der Datei sastatd.c.
Benutzt log_buffer_s::buf, buf und log_buffer_s::sp.
00074 { 00075 // relevanten Teil des Puffers extrahieren. 00076 mixed buf = logbuf->buf[0..logbuf->sp]; 00077 // dann alle Eintraege in Strings mappen 00078 buf = map(buf, #'FormatLogEntry); 00079 // wegschreiben 00080 log_file(STATLOG, sprintf("%@s",buf), MAXLOGSIZE); 00081 // sp auf den Pufferanfang setzen 00082 logbuf->sp = -1; 00083 }
| struct log_buffer_s logbuf |
(<log_buffer_s> buf : allocate(DEFAULT_BUFFER_LEN), bufferlen : DEFAULT_BUFFER_LEN, sp : -1 )
speichert Logeintraege mit indiv.
Modifiereintraegen. Array von log_entry_s mit Info ueber Pufferlaenge und zuletzt geschriebenem Arrayeintrag.
1.6.3