53 lines
1.1 KiB
C++
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
|