/*************************************************************************** rleventlogserver.h - description ------------------- begin : Wed Dec 18 2002 copyright : (C) 2002 by R. Lehrig email : lehrig@t-online.de ***************************************************************************/ /*************************************************************************** * * * This library is free software; you can redistribute it and/or modify * * it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE as * * published by the Free Software Foundation * * * ***************************************************************************/ #ifndef _RL_EVENT_LOG_SERVER_H_ #define _RL_EVENT_LOG_SERVER_H_ #include "rldefine.h" #include "rlevent.h" #include "rlthread.h" #define rlMAX_MESSAGES 128 /*!
A class for implementing an event log server. You may use it with rlevent.h*/ class rlEventLogServer { public: /*!
the event log files will be called:
filename.rlEventLog
max_events = max number of events in one file
files may be purged by cron
*/
rlEventLogServer(const char *filename=NULL, int max_events=10000);
virtual ~rlEventLogServer();
/*!
num is the event number
num = -1 will retrieve all events
*/
const char *getEvent(char *buf, int *num);
void putEvent(const char *event);
private:
char memory[rlMAX_MESSAGES*rlMAX_EVENT];
rlMutex mutex;
int front;
int cnt;
char *filename;
void *fp;
int max_events, num_events;
};
/*! This class starts a separate thread, that runs a rlEventLogServer log server. It waits on TCP port for clients. See rlevent.h*/ class rlEventLogServerThreads { public: /*!
event_log_server will not be deleted by the destructor
*/
rlEventLogServerThreads(int port, rlEventLogServer *event_log_server);
virtual ~rlEventLogServerThreads();
void start();
int getPort();
rlEventLogServer *event_log_server;
private:
rlThread acceptThread;
int port;
};
#endif