#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.
00024 { 00025 for(int i=0; i<rlMAX_MESSAGES; i++) // init memory 00026 { 00027 sprintf(&memory[i*rlMAX_EVENT]," "); 00028 } 00029 front = -1; 00030 cnt = 0; 00031 if(file != NULL) 00032 { 00033 filename = new char [strlen(file)+1]; 00034 strcpy(filename,file); 00035 } 00036 fp = NULL; 00037 max_events = max; 00038 num_events = 0; 00039 }
| 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.
00048 { 00049 char *cptr; 00050 00051 mutex.lock(); 00052 if(*num == -1 && front != -1) *num = front+1; // read all 00053 if(*num >= rlMAX_MESSAGES) *num = -1; 00054 if(*num == front || front == -1) // nothing to read 00055 { 00056 buf[0] = '\0'; 00057 mutex.unlock(); 00058 return NULL; 00059 } 00060 else // read next record 00061 { 00062 (*num)++; 00063 if(*num >= rlMAX_MESSAGES) 00064 { 00065 *num = 0; 00066 if(*num == front) 00067 { 00068 buf[0] = '\0'; 00069 mutex.unlock(); 00070 return NULL; 00071 } 00072 } 00073 strcpy(buf,&memory[(*num)*rlMAX_EVENT]); 00074 cptr = strchr(buf,'\n'); 00075 if(cptr != NULL) *cptr = '\0'; // delete newline 00076 mutex.unlock(); 00077 if(buf[0] < ' ') return ""; 00078 return buf; 00079 } 00080 }
| void rlEventLogServer::putEvent | ( | const char * | event | ) |
Definition at line 82 of file rleventlogserver.cpp.
00083 { 00084 mutex.lock(); 00085 front++; 00086 if(front >= rlMAX_MESSAGES) front = 0; 00087 rlstrncpy(&memory[front*rlMAX_EVENT],event,rlMAX_EVENT-1); 00088 if(fp == NULL && filename != NULL) 00089 { 00090 char name[1024],time[50]; 00091 rlTime t; 00092 00093 t.getLocalTime(); 00094 strcpy(time,t.getTimeString()); time[10] = '_'; time[13] = '_'; time[16] = '\0'; 00095 strcpy(name,filename); 00096 strcat(name,time); 00097 strcat(name,".rlEventLog"); 00098 //printf("openEventlog(%s)\n",name); 00099 #ifdef __VMS 00100 fp = (void *) fopen(name,"w","shr=get"); 00101 #else 00102 fp = (void *) fopen(name,"w"); 00103 #endif 00104 } 00105 if(fp != NULL && filename != NULL) 00106 { 00107 fprintf((FILE *) fp,"%s",event); 00108 fflush((FILE *) fp); 00109 num_events++; 00110 } 00111 if(num_events > max_events && filename != NULL) 00112 { 00113 num_events = 0; 00114 fclose((FILE *) fp); 00115 fp = NULL; 00116 } 00117 mutex.unlock(); 00118 }
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.6.3