forked from quickshell/quickshell
core/ipc: add ipc server/client
Currently can only kill a remote instance.
This commit is contained in:
parent
13b6eeaa22
commit
da043e092a
14 changed files with 710 additions and 120 deletions
|
@ -2,17 +2,32 @@
|
|||
#include <qdatetime.h>
|
||||
#include <qdir.h>
|
||||
|
||||
#include "instanceinfo.hpp"
|
||||
|
||||
struct InstanceLockInfo {
|
||||
pid_t pid = -1;
|
||||
InstanceInfo instance;
|
||||
};
|
||||
|
||||
QDataStream& operator<<(QDataStream& stream, const InstanceLockInfo& info);
|
||||
QDataStream& operator>>(QDataStream& stream, InstanceLockInfo& info);
|
||||
|
||||
class QsPaths {
|
||||
public:
|
||||
static QsPaths* instance();
|
||||
static void init(QString shellId);
|
||||
static QDir crashDir(const QString& shellId, const QDateTime& launchTime);
|
||||
static void init(QString shellId, QString pathId);
|
||||
static QDir crashDir(const QString& id);
|
||||
static QString ipcPath(const QString& id);
|
||||
static bool checkLock(const QString& path, InstanceLockInfo* info = nullptr);
|
||||
static QVector<InstanceLockInfo> collectInstances(const QString& path);
|
||||
|
||||
QDir* cacheDir();
|
||||
QDir* baseRunDir();
|
||||
QDir* runDir();
|
||||
QDir* shellRunDir();
|
||||
QDir* instanceRunDir();
|
||||
void linkPidRunDir();
|
||||
void linkRunDir();
|
||||
void linkPathDir();
|
||||
void createLock();
|
||||
|
||||
private:
|
||||
enum class DirState {
|
||||
|
@ -22,12 +37,13 @@ private:
|
|||
};
|
||||
|
||||
QString shellId;
|
||||
QString pathId;
|
||||
QDir mCacheDir;
|
||||
QDir mBaseRunDir;
|
||||
QDir mRunDir;
|
||||
QDir mShellRunDir;
|
||||
QDir mInstanceRunDir;
|
||||
DirState cacheState = DirState::Unknown;
|
||||
DirState baseRunState = DirState::Unknown;
|
||||
DirState runState = DirState::Unknown;
|
||||
DirState shellRunState = DirState::Unknown;
|
||||
DirState instanceRunState = DirState::Unknown;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue