Qt remote objects IPC

This commit is contained in:
pokamest 2021-02-02 01:47:40 +03:00
parent c4df9c004b
commit 048a673d31
18 changed files with 340 additions and 25 deletions

View file

@ -3,6 +3,7 @@
#include <QLocalServer>
#include <QLocalSocket>
#include "ipc.h"
#include "localserver.h"
#include "utils.h"
@ -14,19 +15,23 @@
LocalServer::LocalServer(QObject *parent) : QObject(parent),
m_clientConnection(nullptr),
m_clientConnected(false)
m_clientConnected(false),
m_ipcServer(this)
{
m_server = QSharedPointer<QLocalServer>(new QLocalServer(this));
m_server->setSocketOptions(QLocalServer::WorldAccessOption);
if (!m_server->listen(Utils::serverName())) {
qDebug() << QString("Unable to start the server: %1.").arg(m_server->errorString());
return;
}
// if (!m_server->listen(Utils::serverName())) {
// qDebug() << QString("Unable to start the server: %1.").arg(m_server->errorString());
// return;
// }
connect(m_server.data(), &QLocalServer::newConnection, this, &LocalServer::onNewConnection);
// connect(m_server.data(), &QLocalServer::newConnection, this, &LocalServer::onNewConnection);
qDebug().noquote() << QString("Local server started on '%1'").arg(m_server->serverName());
// 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
m_serverNode.enableRemoting(&m_ipcServer); // enable remoting/sharing
}
LocalServer::~LocalServer()
@ -41,7 +46,8 @@ LocalServer::~LocalServer()
bool LocalServer::isRunning() const
{
return m_server->isListening();
return true;
//return m_server->isListening();
}
void LocalServer::onNewConnection()

View file

@ -9,6 +9,7 @@
#include <QVector>
#include "message.h"
#include "ipcserver.h"
class QLocalServer;
class QLocalSocket;
@ -46,6 +47,9 @@ private:
QVector<QProcess*> m_processList;
bool m_clientConnected;
IpcServer m_ipcServer;
QRemoteObjectHost m_serverNode;
};
#endif // LOCALSERVER_H

View file

@ -1,11 +1,14 @@
TARGET = AmneziaVPN-service
TEMPLATE = app
CONFIG += console qt no_batch
QT += core network
QT += core network remoteobjects
HEADERS = \
../../client/message.h \
../../client/utils.h \
../../ipc/ipc.h \
../../ipc/ipcserver.h \
../../ipc/ipcserverprocess.h \
localserver.h \
log.h \
router.h \
@ -14,6 +17,8 @@ HEADERS = \
SOURCES = \
../../client/message.cpp \
../../client/utils.cpp \
../../ipc/ipcserver.cpp \
../../ipc/ipcserverprocess.cpp \
localserver.cpp \
log.cpp \
main.cpp \
@ -47,3 +52,5 @@ include(../src/qtservice.pri)
#}
INCLUDEPATH += "$$PWD/../../client"
REPC_SOURCE += ../../ipc/ipcinterface.rep