|
rllib
1
|
#include <rleventlogserver.h>

Public Member Functions | |
| rlEventLogServer (const char *filename=NULL, int max_events=10000) | |
| virtual | ~rlEventLogServer () |
| const char * | getEvent (char *buf, int *num) |
| void | putEvent (const char *event) |
Private Attributes | |
| char | memory [rlMAX_MESSAGES *rlMAX_EVENT] |
| rlMutex | mutex |
| int | front |
| int | cnt |
| char * | filename |
| void * | fp |
| int | max_events |
| int | num_events |
A class for implementing an event log server. You may use it with rlevent.h
Definition at line 29 of file rleventlogserver.h.
| rlEventLogServer::rlEventLogServer | ( | const char * | filename = NULL, |
| int | max_events = 10000 |
||
| ) |
the event log files will be called:
filename<date-and-time>.rlEventLog
max_events = max number of events in one file
files may be purged by cron
Definition at line 23 of file rleventlogserver.cpp.
{
for(int i=0; i<rlMAX_MESSAGES; i++) // init memory
{
sprintf(&memory[i*rlMAX_EVENT]," ");
}
front = -1;
cnt = 0;
if(file != NULL)
{
filename = new char [strlen(file)+1];
strcpy(filename,file);
}
fp = NULL;
max_events = max;
num_events = 0;
}
| rlEventLogServer::~rlEventLogServer | ( | ) | [virtual] |
| const char * rlEventLogServer::getEvent | ( | char * | buf, |
| int * | num | ||
| ) |
num is the event number
num = -1 will retrieve all events
Definition at line 47 of file rleventlogserver.cpp.
{
char *cptr;
mutex.lock();
if(*num == -1 && front != -1) *num = front+1; // read all
if(*num >= rlMAX_MESSAGES) *num = -1;
if(*num == front || front == -1) // nothing to read
{
buf[0] = '\0';
mutex.unlock();
return NULL;
}
else // read next record
{
(*num)++;
if(*num >= rlMAX_MESSAGES)
{
*num = 0;
if(*num == front)
{
buf[0] = '\0';
mutex.unlock();
return NULL;
}
}
strcpy(buf,&memory[(*num)*rlMAX_EVENT]);
cptr = strchr(buf,'\n');
if(cptr != NULL) *cptr = '\0'; // delete newline
mutex.unlock();
if(buf[0] < ' ') return "";
return buf;
}
}
| void rlEventLogServer::putEvent | ( | const char * | event | ) |
Definition at line 82 of file rleventlogserver.cpp.
{
mutex.lock();
front++;
if(front >= rlMAX_MESSAGES) front = 0;
rlstrncpy(&memory[front*rlMAX_EVENT],event,rlMAX_EVENT-1);
if(fp == NULL && filename != NULL)
{
char name[1024],time[50];
rlTime t;
t.getLocalTime();
strcpy(time,t.getTimeString()); time[10] = '_'; time[13] = '_'; time[16] = '\0';
strcpy(name,filename);
strcat(name,time);
strcat(name,".rlEventLog");
//printf("openEventlog(%s)\n",name);
#ifdef __VMS
fp = (void *) fopen(name,"w","shr=get");
#else
fp = (void *) fopen(name,"w");
#endif
}
if(fp != NULL && filename != NULL)
{
fprintf((FILE *) fp,"%s",event);
fflush((FILE *) fp);
num_events++;
}
if(num_events > max_events && filename != NULL)
{
num_events = 0;
fclose((FILE *) fp);
fp = NULL;
}
mutex.unlock();
}
int rlEventLogServer::cnt [private] |
Definition at line 52 of file rleventlogserver.h.
char* rlEventLogServer::filename [private] |
Definition at line 53 of file rleventlogserver.h.
void* rlEventLogServer::fp [private] |
Definition at line 54 of file rleventlogserver.h.
int rlEventLogServer::front [private] |
Definition at line 51 of file rleventlogserver.h.
int rlEventLogServer::max_events [private] |
Definition at line 55 of file rleventlogserver.h.
char rlEventLogServer::memory[rlMAX_MESSAGES *rlMAX_EVENT] [private] |
Definition at line 49 of file rleventlogserver.h.
rlMutex rlEventLogServer::mutex [private] |
Definition at line 50 of file rleventlogserver.h.
int rlEventLogServer::num_events [private] |
Definition at line 55 of file rleventlogserver.h.
1.7.5.1