Sandboxie/SandboxiePlus/SandMan/ApiLog.h

74 lines
1.5 KiB
C
Raw Normal View History

2020-06-01 17:11:56 +01:00
#pragma once
2020-07-04 11:07:36 +01:00
class CApiLogEntry : public QSharedData
{
public:
CApiLogEntry(quint64 ProcessId, const QString& Message);
quint64 GetProcessId() const { return m_ProcessId; }
QDateTime GetTimeStamp() const { return m_TimeStamp; }
QString GetMessage() const { return m_Message; }
quint64 GetUID() const { return m_uid; }
protected:
quint64 m_ProcessId;
QDateTime m_TimeStamp;
QString m_Message;
quint64 m_uid;
};
typedef QSharedDataPointer<CApiLogEntry> CApiLogEntryPtr;
2020-06-01 17:11:56 +01:00
class CApiLog : public QThread
{
Q_OBJECT
public:
CApiLog(QObject* parent = 0);
virtual ~CApiLog();
2020-07-04 11:07:36 +01:00
virtual QList<CApiLogEntryPtr> GetApiLog() const { QReadLocker Lock(&m_ApiLogMutex); return m_ApiLogList; }
virtual void ClearApiLog() { QWriteLocker Lock(&m_ApiLogMutex); m_ApiLogList.clear(); }
2020-06-01 17:11:56 +01:00
protected:
2020-07-04 11:07:36 +01:00
friend class CApiLogServer;
2020-06-01 17:11:56 +01:00
virtual void run();
2020-07-04 11:07:36 +01:00
mutable QReadWriteLock m_ApiLogMutex;
QList<CApiLogEntryPtr> m_ApiLogList;
CApiLogServer* m_pServer;
2020-06-01 17:11:56 +01:00
};
/////////////////////////////////////////////////////////////////////////////////////
//
class CApiLogServer : public QObject
{
Q_OBJECT
protected:
CApiLogServer();
public slots:
void OnPipe();
void OnData();
void OnClose();
protected:
friend class CApiLog;
struct SApiLog
{
2020-07-04 11:07:36 +01:00
SApiLog(quint64 pid) { ProcessId = pid; }
2020-06-01 17:11:56 +01:00
QByteArray Buffer;
2020-07-04 11:07:36 +01:00
quint64 ProcessId;
2020-06-01 17:11:56 +01:00
};
QLocalServer* m_pServer;
QMap<QLocalSocket*, SApiLog*> m_pClients;
CApiLog* m_pApiLog;
};