rllib  1
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros
Public Member Functions | Private Attributes | List of all members
rlEventLogServer Class Reference

#include <rleventlogserver.h>

Collaboration diagram for rlEventLogServer:
Collaboration graph
[legend]

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
 

Detailed Description

A class for implementing an event log server.
You may use it with rlevent.h

Definition at line 29 of file rleventlogserver.h.

Constructor & Destructor Documentation

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;
}
rlEventLogServer::~rlEventLogServer ( )
virtual

Definition at line 41 of file rleventlogserver.cpp.

{
if(filename != NULL) delete [] filename;
if(fp != NULL) fclose((FILE *) fp);
}

Member Function Documentation

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;
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';
return NULL;
}
else // read next record
{
(*num)++;
if(*num >= rlMAX_MESSAGES)
{
*num = 0;
if(*num == front)
{
buf[0] = '\0';
return NULL;
}
}
strcpy(buf,&memory[(*num)*rlMAX_EVENT]);
cptr = strchr(buf,'\n');
if(cptr != NULL) *cptr = '\0'; // delete newline
if(buf[0] < ' ') return "";
return buf;
}
}
void rlEventLogServer::putEvent ( const char *  event)

Definition at line 82 of file rleventlogserver.cpp.

{
front++;
rlstrncpy(&memory[front*rlMAX_EVENT],event,rlMAX_EVENT-1);
if(fp == NULL && filename != NULL)
{
char name[1024],time[50];
rlTime t;
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);
}
if(num_events > max_events && filename != NULL)
{
fclose((FILE *) fp);
fp = NULL;
}
}

Member Data Documentation

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.


The documentation for this class was generated from the following files: