Skip to content

Commit

Permalink
qzmq: remove remaining use of QObject (#48112)
Browse files Browse the repository at this point in the history
  • Loading branch information
jkarneges authored Feb 5, 2025
1 parent 865ade8 commit 9b35cdb
Show file tree
Hide file tree
Showing 14 changed files with 213 additions and 249 deletions.
6 changes: 4 additions & 2 deletions src/core/qzmq/src/qzmqreprouter.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,10 @@
#ifndef QZMQREPROUTER_H
#define QZMQREPROUTER_H

#include <QObject>
#include <boost/signals2.hpp>

class QString;

using Signal = boost::signals2::signal<void()>;
using SignalInt = boost::signals2::signal<void(int)>;
using Connection = boost::signals2::scoped_connection;
Expand Down Expand Up @@ -55,7 +56,8 @@ class RepRouter
SignalInt messagesWritten;

private:
Q_DISABLE_COPY(RepRouter)
RepRouter(const RepRouter &) = delete;
RepRouter &operator=(const RepRouter &) = delete;

class Private;
friend class Private;
Expand Down
6 changes: 2 additions & 4 deletions src/core/qzmq/src/qzmqsocket.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -632,14 +632,12 @@ class Socket::Private
}
};

Socket::Socket(Type type, QObject *parent) :
QObject(parent)
Socket::Socket(Type type)
{
d = std::make_shared<Private>(this, type, nullptr);
}

Socket::Socket(Type type, Context *context, QObject *parent) :
QObject(parent)
Socket::Socket(Type type, Context *context)
{
d = std::make_shared<Private>(this, type, context);
}
Expand Down
16 changes: 9 additions & 7 deletions src/core/qzmq/src/qzmqsocket.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,12 @@
#ifndef QZMQSOCKET_H
#define QZMQSOCKET_H

#include <QObject>
#include <QByteArray>
#include <QList>
#include <boost/signals2.hpp>

class QString;

using Signal = boost::signals2::signal<void()>;
using SignalInt = boost::signals2::signal<void(int)>;
using Connection = boost::signals2::scoped_connection;
Expand All @@ -36,10 +39,8 @@ namespace QZmq {

class Context;

class Socket : public QObject
class Socket
{
Q_OBJECT

public:
enum Type
{
Expand All @@ -54,8 +55,8 @@ class Socket : public QObject
Sub
};

Socket(Type type, QObject *parent = 0);
Socket(Type type, Context *context, QObject *parent = 0);
Socket(Type type);
Socket(Type type, Context *context);
~Socket();

// 0 means drop queue and don't block, -1 means infinite (default = -1)
Expand Down Expand Up @@ -109,7 +110,8 @@ class Socket : public QObject
SignalInt messagesWritten;

private:
Q_DISABLE_COPY(Socket)
Socket(const Socket &) = delete;
Socket &operator=(const Socket &) = delete;

class Private;
friend class Private;
Expand Down
3 changes: 1 addition & 2 deletions src/core/qzmq/src/qzmqvalve.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,7 @@ class Valve::Private
}
};

Valve::Valve(QZmq::Socket *sock, QObject *parent) :
QObject(parent)
Valve::Valve(QZmq::Socket *sock)
{
d = std::make_shared<Private>(this);
d->setup(sock);
Expand Down
9 changes: 4 additions & 5 deletions src/core/qzmq/src/qzmqvalve.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@
#ifndef QZMQVALVE_H
#define QZMQVALVE_H

#include <QObject>
#include <QByteArray>
#include <QList>
#include <boost/signals2.hpp>

using SignalList = boost::signals2::signal<void(const QList<QByteArray>&)>;
Expand All @@ -35,12 +36,10 @@ namespace QZmq {

class Socket;

class Valve : public QObject
class Valve
{
Q_OBJECT

public:
Valve(QZmq::Socket *sock, QObject *parent = 0);
Valve(QZmq::Socket *sock);
~Valve();

bool isOpen() const;
Expand Down
9 changes: 4 additions & 5 deletions src/core/statsmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ class StatsManager::Private : public QObject
int subscriptionTtl;
int subscriptionLinger;
int reportInterval;
QZmq::Socket *sock;
std::unique_ptr<QZmq::Socket> sock;
SimpleHttpServer *prometheusServer;
QString prometheusPrefix;
QList<PrometheusMetric> prometheusMetrics;
Expand Down Expand Up @@ -450,7 +450,6 @@ class StatsManager::Private : public QObject
subscriptionTtl(60 * 1000),
subscriptionLinger(60 * 1000),
reportInterval(10 * 1000),
sock(0),
prometheusServer(0),
currentConnectionInfoRefreshBucket(0),
currentSubscriptionRefreshBucket(0),
Expand Down Expand Up @@ -500,16 +499,16 @@ class StatsManager::Private : public QObject

bool setupSock()
{
delete sock;
sock.reset();

sock = new QZmq::Socket(QZmq::Socket::Pub, this);
sock = std::make_unique<QZmq::Socket>(QZmq::Socket::Pub);

sock->setHwm(OUT_HWM);
sock->setWriteQueueEnabled(false);
sock->setShutdownWaitTime(0);

QString errorMessage;
if(!ZUtil::setupSocket(sock, spec, true, ipcFileMode, &errorMessage))
if(!ZUtil::setupSocket(sock.get(), spec, true, ipcFileMode, &errorMessage))
{
log_error("%s", qPrintable(errorMessage));
return false;
Expand Down
99 changes: 44 additions & 55 deletions src/core/zhttpmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,17 +82,17 @@ class ZhttpManager::Private : public QObject
QStringList server_in_specs;
QStringList server_in_stream_specs;
QStringList server_out_specs;
QZmq::Socket *client_out_sock;
QZmq::Socket *client_out_stream_sock;
QZmq::Socket *client_in_sock;
QZmq::Socket *client_req_sock;
QZmq::Socket *server_in_sock;
QZmq::Socket *server_in_stream_sock;
QZmq::Socket *server_out_sock;
QZmq::Valve *client_in_valve;
QZmq::Valve *client_out_stream_valve;
QZmq::Valve *server_in_valve;
QZmq::Valve *server_in_stream_valve;
std::unique_ptr<QZmq::Socket> client_out_sock;
std::unique_ptr<QZmq::Socket> client_out_stream_sock;
std::unique_ptr<QZmq::Socket> client_in_sock;
std::unique_ptr<QZmq::Socket> client_req_sock;
std::unique_ptr<QZmq::Socket> server_in_sock;
std::unique_ptr<QZmq::Socket> server_in_stream_sock;
std::unique_ptr<QZmq::Socket> server_out_sock;
std::unique_ptr<QZmq::Valve> client_in_valve;
std::unique_ptr<QZmq::Valve> client_out_stream_valve;
std::unique_ptr<QZmq::Valve> server_in_valve;
std::unique_ptr<QZmq::Valve> server_in_stream_valve;
QByteArray instanceId;
int ipcFileMode;
bool doBind;
Expand All @@ -119,17 +119,6 @@ class ZhttpManager::Private : public QObject
Private(ZhttpManager *_q) :
QObject(_q),
q(_q),
client_out_sock(0),
client_out_stream_sock(0),
client_in_sock(0),
client_req_sock(0),
server_in_sock(0),
server_in_stream_sock(0),
server_out_sock(0),
client_in_valve(0),
client_out_stream_valve(0),
server_in_valve(0),
server_in_stream_valve(0),
ipcFileMode(-1),
doBind(false),
currentSessionRefreshBucket(0)
Expand Down Expand Up @@ -165,17 +154,17 @@ class ZhttpManager::Private : public QObject
{
cosConnection.disconnect();
rrConnection.disconnect();
delete client_req_sock;
delete client_out_sock;
client_req_sock.reset();
client_out_sock.reset();

client_out_sock = new QZmq::Socket(QZmq::Socket::Push, this);
client_out_sock = std::make_unique<QZmq::Socket>(QZmq::Socket::Push);
cosConnection = client_out_sock->messagesWritten.connect(boost::bind(&Private::client_out_messagesWritten, this, boost::placeholders::_1));

client_out_sock->setHwm(OUT_HWM);
client_out_sock->setShutdownWaitTime(CLIENT_WAIT_TIME);

QString errorMessage;
if(!ZUtil::setupSocket(client_out_sock, client_out_specs, doBind, ipcFileMode, &errorMessage))
if(!ZUtil::setupSocket(client_out_sock.get(), client_out_specs, doBind, ipcFileMode, &errorMessage))
{
log_error("%s", qPrintable(errorMessage));
return false;
Expand All @@ -188,11 +177,11 @@ class ZhttpManager::Private : public QObject
{
rrConnection.disconnect();
cossConnection.disconnect();
delete client_req_sock;
delete client_out_stream_valve;
delete client_out_stream_sock;
client_req_sock.reset();
client_out_stream_valve.reset();
client_out_stream_sock.reset();

client_out_stream_sock = new QZmq::Socket(QZmq::Socket::Router, this);
client_out_stream_sock = std::make_unique<QZmq::Socket>(QZmq::Socket::Router);
cossConnection = client_out_stream_sock->messagesWritten.connect(boost::bind(&Private::client_out_stream_messagesWritten, this, boost::placeholders::_1));

client_out_stream_sock->setIdentity(instanceId);
Expand All @@ -202,13 +191,13 @@ class ZhttpManager::Private : public QObject
client_out_stream_sock->setImmediateEnabled(true);

QString errorMessage;
if(!ZUtil::setupSocket(client_out_stream_sock, client_out_stream_specs, doBind, ipcFileMode, &errorMessage))
if(!ZUtil::setupSocket(client_out_stream_sock.get(), client_out_stream_specs, doBind, ipcFileMode, &errorMessage))
{
log_error("%s", qPrintable(errorMessage));
return false;
}

client_out_stream_valve = new QZmq::Valve(client_out_stream_sock, this);
client_out_stream_valve = std::make_unique<QZmq::Valve>(client_out_stream_sock.get());
clientOutStreamConnection = client_out_stream_valve->readyRead.connect(boost::bind(&Private::client_out_stream_readyRead, this, boost::placeholders::_1));

client_out_stream_valve->open();
Expand All @@ -219,24 +208,24 @@ class ZhttpManager::Private : public QObject
bool setupClientIn()
{
rrConnection.disconnect();
delete client_req_sock;
delete client_in_valve;
delete client_in_sock;
client_req_sock.reset();
client_in_valve.reset();
client_in_sock.reset();

client_in_sock = new QZmq::Socket(QZmq::Socket::Sub, this);
client_in_sock = std::make_unique<QZmq::Socket>(QZmq::Socket::Sub);

client_in_sock->setHwm(DEFAULT_HWM);
client_in_sock->setShutdownWaitTime(0);
client_in_sock->subscribe(instanceId + ' ');

QString errorMessage;
if(!ZUtil::setupSocket(client_in_sock, client_in_specs, doBind, ipcFileMode, &errorMessage))
if(!ZUtil::setupSocket(client_in_sock.get(), client_in_specs, doBind, ipcFileMode, &errorMessage))
{
log_error("%s", qPrintable(errorMessage));
return false;
}

client_in_valve = new QZmq::Valve(client_in_sock, this);
client_in_valve = std::make_unique<QZmq::Valve>(client_in_sock.get());
clientConnection = client_in_valve->readyRead.connect(boost::bind(&Private::client_in_readyRead, this, boost::placeholders::_1));

client_in_valve->open();
Expand All @@ -248,18 +237,18 @@ class ZhttpManager::Private : public QObject
{
cosConnection.disconnect();
cossConnection.disconnect();
delete client_out_sock;
delete client_out_stream_sock;
delete client_in_sock;
client_out_sock.reset();
client_out_stream_sock.reset();
client_in_sock.reset();

client_req_sock = new QZmq::Socket(QZmq::Socket::Dealer, this);
client_req_sock = std::make_unique<QZmq::Socket>(QZmq::Socket::Dealer);
rrConnection = client_req_sock->readyRead.connect(boost::bind(&Private::client_req_readyRead, this));

client_req_sock->setHwm(OUT_HWM);
client_req_sock->setShutdownWaitTime(CLIENT_WAIT_TIME);

QString errorMessage;
if(!ZUtil::setupSocket(client_req_sock, client_req_specs, doBind, ipcFileMode, &errorMessage))
if(!ZUtil::setupSocket(client_req_sock.get(), client_req_specs, doBind, ipcFileMode, &errorMessage))
{
log_error("%s", qPrintable(errorMessage));
return false;
Expand All @@ -270,21 +259,21 @@ class ZhttpManager::Private : public QObject

bool setupServerIn()
{
delete server_in_valve;
delete server_in_sock;
server_in_valve.reset();
server_in_sock.reset();

server_in_sock = new QZmq::Socket(QZmq::Socket::Pull, this);
server_in_sock = std::make_unique<QZmq::Socket>(QZmq::Socket::Pull);

server_in_sock->setHwm(IN_HWM);

QString errorMessage;
if(!ZUtil::setupSocket(server_in_sock, server_in_specs, doBind, ipcFileMode, &errorMessage))
if(!ZUtil::setupSocket(server_in_sock.get(), server_in_specs, doBind, ipcFileMode, &errorMessage))
{
log_error("%s", qPrintable(errorMessage));
return false;
}

server_in_valve = new QZmq::Valve(server_in_sock, this);
server_in_valve = std::make_unique<QZmq::Valve>(server_in_sock.get());
serverConnection = server_in_valve->readyRead.connect(boost::bind(&Private::server_in_readyRead, this, boost::placeholders::_1));

server_in_valve->open();
Expand All @@ -295,21 +284,21 @@ class ZhttpManager::Private : public QObject
bool setupServerInStream()
{
serverStreamConnection.disconnect();
delete server_in_stream_sock;
server_in_stream_sock.reset();

server_in_stream_sock = new QZmq::Socket(QZmq::Socket::Router, this);
server_in_stream_sock = std::make_unique<QZmq::Socket>(QZmq::Socket::Router);

server_in_stream_sock->setIdentity(instanceId);
server_in_stream_sock->setHwm(DEFAULT_HWM);

QString errorMessage;
if(!ZUtil::setupSocket(server_in_stream_sock, server_in_stream_specs, doBind, ipcFileMode, &errorMessage))
if(!ZUtil::setupSocket(server_in_stream_sock.get(), server_in_stream_specs, doBind, ipcFileMode, &errorMessage))
{
log_error("%s", qPrintable(errorMessage));
return false;
}

server_in_stream_valve = new QZmq::Valve(server_in_stream_sock, this);
server_in_stream_valve = std::make_unique<QZmq::Valve>(server_in_stream_sock.get());
serverStreamConnection = server_in_stream_valve->readyRead.connect(boost::bind(&Private::server_in_stream_readyRead, this, boost::placeholders::_1));

server_in_stream_valve->open();
Expand All @@ -320,17 +309,17 @@ class ZhttpManager::Private : public QObject
bool setupServerOut()
{
sosConnection.disconnect();
delete server_out_sock;
server_out_sock.reset();

server_out_sock = new QZmq::Socket(QZmq::Socket::Pub, this);
server_out_sock = std::make_unique<QZmq::Socket>(QZmq::Socket::Pub);
sosConnection = server_out_sock->messagesWritten.connect(boost::bind(&Private::server_out_messagesWritten, this, boost::placeholders::_1));

server_out_sock->setWriteQueueEnabled(false);
server_out_sock->setHwm(DEFAULT_HWM);
server_out_sock->setShutdownWaitTime(SERVER_WAIT_TIME);

QString errorMessage;
if(!ZUtil::setupSocket(server_out_sock, server_out_specs, doBind, ipcFileMode, &errorMessage))
if(!ZUtil::setupSocket(server_out_sock.get(), server_out_specs, doBind, ipcFileMode, &errorMessage))
{
log_error("%s", qPrintable(errorMessage));
return false;
Expand Down
Loading

0 comments on commit 9b35cdb

Please sign in to comment.