sastatd.c-Dateireferenz

Statistikdaemon fuer Skill-Attribute Der Daemon loggt SA-Modifier und schreibt sie von Zeit zu Zeit auf die Platte. Mehr ...

#include <defines.h>
Include-Abhängigkeitsdiagramm für sastatd.c:

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.

Ausführliche Beschreibung

Statistikdaemon fuer Skill-Attribute Der Daemon loggt SA-Modifier und schreibt sie von Zeit zu Zeit auf die Platte.

Autor:
Zesstra
Datum:
06.08.2008
Version:
$Id$

Definiert in Datei sastatd.c.


Makro-Dokumentation

#define BUFFERTHRESHOLD   150

ab dieser Anzahl an Eintraegen wird im naechsten Backend-Zyklus vom Driver per Callout der Puffer weggeschrieben.

Definiert in Zeile 23 der Datei sastatd.c.

#define DEBUG ( x   ) 
Wert:
if (find_player("zesstra"))\
            tell_object(find_player("zesstra"),\
                                      "EDBG: "+x+"\n")

Outputs debug message to Maintainer, if Mainteiner is logged in.

Definiert in Zeile 62 der Datei sastatd.c.

#define DEFAULT_BUFFER_LEN   200

anfaengliche Groesse des Log-Puffers

Definiert in Zeile 20 der Datei sastatd.c.

#define MAXLOGSIZE   3145728

max.

Logfilegroesse (3 MB)

Definiert in Zeile 30 der Datei sastatd.c.

#define STATLOG   "SASTATS"

Logfile fuer die Stats.

Definiert in Zeile 27 der Datei sastatd.c.


Dokumentation der Funktionen

protected void create (  ) 

Definiert in Zeile 113 der Datei sastatd.c.

00113                         {
00114   seteuid(getuid(ME));
00115 }

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 }

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

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  ) 

Definiert in Zeile 117 der Datei sastatd.c.

00117                                       {
00118   if (logbuf->sp > -1)
00119     WriteBuffer();
00120   destruct(ME);
00121   return 1;
00122 }

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 }


Variablen-Dokumentation

Initialisierung:
 (<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.

Definiert in Zeile 51 der Datei sastatd.c.

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