Qt ro refact
This commit is contained in:
parent
b2392c1943
commit
b6571d99de
14 changed files with 157 additions and 36 deletions
20
ipc/ipc.h
20
ipc/ipc.h
|
@ -1,12 +1,30 @@
|
|||
#ifndef IPC_H
|
||||
#define IPC_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QString>
|
||||
|
||||
#define IPC_SERVICE_URL "local:AmneziaVpnIpcInterface"
|
||||
|
||||
namespace amnezia {
|
||||
inline QString getIpcProcessUrl(int pid) { return QString("%1_%2").arg(IPC_SERVICE_URL).arg(pid); }
|
||||
|
||||
inline QString getIpcServiceUrl() {
|
||||
#ifdef Q_OS_WIN
|
||||
return IPC_SERVICE_URL;
|
||||
#else
|
||||
return QString("/tmp/%1").arg(IPC_SERVICE_URL);
|
||||
#endif
|
||||
}
|
||||
|
||||
inline QString getIpcProcessUrl(int pid) {
|
||||
#ifdef Q_OS_WIN
|
||||
return QString("%1_%2").arg(IPC_SERVICE_URL).arg(pid);
|
||||
#else
|
||||
return QString("/tmp/%1_%2").arg(IPC_SERVICE_URL).arg(pid);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
} // namespace amnezia
|
||||
|
||||
#endif // IPC_H
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "ipcserver.h"
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QLocalSocket>
|
||||
|
||||
IpcServer::IpcServer(QObject *parent):
|
||||
IpcInterfaceSource(parent)
|
||||
|
@ -11,8 +12,35 @@ int IpcServer::createPrivilegedProcess()
|
|||
m_localpid++;
|
||||
|
||||
ProcessDescriptor pd;
|
||||
pd.serverNode->setHostUrl(QUrl(amnezia::getIpcProcessUrl(m_localpid)));
|
||||
pd.serverNode->enableRemoting(pd.ipcProcess.data());
|
||||
// pd.serverNode->setHostUrl(QUrl(amnezia::getIpcProcessUrl(m_localpid)));
|
||||
// pd.serverNode->enableRemoting(pd.ipcProcess.data());
|
||||
|
||||
|
||||
|
||||
pd.localServer = QSharedPointer<QLocalServer>(new QLocalServer(this));
|
||||
pd.localServer->setSocketOptions(QLocalServer::WorldAccessOption);
|
||||
|
||||
if (!pd.localServer->listen(amnezia::getIpcProcessUrl(m_localpid))) {
|
||||
qDebug() << QString("Unable to start the server: %1.").arg(pd.localServer->errorString());
|
||||
return -1;
|
||||
}
|
||||
|
||||
// connect(m_server.data(), &QLocalServer::newConnection, this, &LocalServer::onNewConnection);
|
||||
|
||||
// qDebug().noquote() << QString("Local server started on '%1'").arg(m_server->serverName());
|
||||
|
||||
// m_serverNode.setHostUrl(QUrl(QStringLiteral(IPC_SERVICE_URL))); // create host node without Registry
|
||||
|
||||
|
||||
|
||||
// Make sure any connections are handed to QtRO
|
||||
QObject::connect(pd.localServer.data(), &QLocalServer::newConnection, this, [pd]() {
|
||||
qDebug() << "LocalServer new connection";
|
||||
if (pd.serverNode) {
|
||||
pd.serverNode->addHostSideConnection(pd.localServer->nextPendingConnection());
|
||||
pd.serverNode->enableRemoting(pd.ipcProcess.data());
|
||||
}
|
||||
});
|
||||
|
||||
m_processes.insert(m_localpid, pd);
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef IPCSERVER_H
|
||||
#define IPCSERVER_H
|
||||
|
||||
#include <QLocalServer>
|
||||
#include <QObject>
|
||||
|
||||
#include "ipc.h"
|
||||
|
@ -21,9 +22,11 @@ private:
|
|||
ProcessDescriptor (QObject *parent = nullptr) {
|
||||
serverNode = QSharedPointer<QRemoteObjectHost>(new QRemoteObjectHost(parent));
|
||||
ipcProcess = QSharedPointer<IpcServerProcess>(new IpcServerProcess(parent));
|
||||
localServer = QSharedPointer<QLocalServer>(new QLocalServer(parent));
|
||||
}
|
||||
QSharedPointer<IpcServerProcess> ipcProcess;
|
||||
QSharedPointer<QRemoteObjectHost> serverNode;
|
||||
QSharedPointer<QLocalServer> localServer;
|
||||
};
|
||||
|
||||
QMap<int, ProcessDescriptor> m_processes;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue