#ifndef IPCCLIENT_H #define IPCCLIENT_H #include #include #include "ipc.h" #include "rep_ipc_interface_replica.h" #include "rep_ipc_process_tun2socks_replica.h" #include "privileged_process.h" class IpcClient : public QObject { Q_OBJECT public: explicit IpcClient(QObject *parent = nullptr); static IpcClient *Instance(); static bool init(IpcClient *instance); static QSharedPointer Interface(); static QSharedPointer InterfaceTun2Socks(); static QSharedPointer CreatePrivilegedProcess(); bool isSocketConnected() const; signals: private: ~IpcClient() override; QRemoteObjectNode m_ClientNode; QRemoteObjectNode m_Tun2SocksNode; QSharedPointer m_ipcClient; QPointer m_localSocket; QPointer m_tun2socksSocket; QSharedPointer m_Tun2SocksClient; struct ProcessDescriptor { ProcessDescriptor () { replicaNode = QSharedPointer(new QRemoteObjectNode()); ipcProcess = QSharedPointer(); localSocket = QSharedPointer(); } QSharedPointer ipcProcess; QSharedPointer replicaNode; QSharedPointer localSocket; }; QMap> m_processNodes; bool m_isSocketConnected {false}; static IpcClient *m_instance; }; #endif // IPCCLIENT_H