servatrice/servatrice/src/server_logger.h
Max-Wilhelm Bruker fbc9ff7601 extra logging
2011-07-09 12:14:07 +02:00

53 lines
1.1 KiB
C++

#ifndef SERVER_LOGGER_H
#define SERVER_LOGGER_H
#include <QObject>
#include <QThread>
#include <QMutex>
#include <QWaitCondition>
#include <QStringList>
class QSocketNotifier;
class QFile;
class ServerSocketInterface;
class ServerLogger : public QObject {
Q_OBJECT
public:
ServerLogger(const QString &logFileName, QObject *parent = 0);
~ServerLogger();
static void hupSignalHandler(int unused);
public slots:
void logMessage(QString message, ServerSocketInterface *ssi = 0);
private slots:
#ifdef Q_OS_UNIX
void handleSigHup();
#endif
void flushBuffer();
signals:
void sigFlushBuffer();
private:
static int sigHupFD[2];
QSocketNotifier *snHup;
static QFile *logFile;
bool flushRunning;
QStringList buffer;
QMutex bufferMutex;
};
class ServerLoggerThread : public QThread {
Q_OBJECT
private:
QString fileName;
ServerLogger *logger;
QWaitCondition initWaitCondition;
protected:
void run();
public:
ServerLoggerThread(const QString &_fileName, QObject *parent = 0);
~ServerLoggerThread();
ServerLogger *getLogger() const { return logger; }
void waitForInit();
};
#endif