22#ifndef QTPDCOM_PROCESS_H
23#define QTPDCOM_PROCESS_H
28#include <QSslCertificate>
32#include <pdcom5/ClientStatistics.h>
33#include <pdcom5/Process.h>
36#ifndef PDCOM_VERSION_CODE
37# error "No PDCOM_VERSION_CODE found."
40 && (PDCOM_VERSION_CODE < PDCOM_VERSION(5, 0, 0) \
41 || PDCOM_VERSION_CODE >= PDCOM_VERSION(6, 0, 0))
42# error "Invalid PdCom version."
54#ifdef QTPDCOM_HAS_LOGIN_MANAGER
71 public QObject,
public PdCom::Process
94 Process(QObject *parent =
nullptr);
97 void setApplicationName(
const QString &);
98 QString getApplicationName()
const;
99 Q_INVOKABLE
void connectToHost(
const QString &, quint16 = 2345);
100 Q_INVOKABLE
void disconnectFromHost();
122 Q_INVOKABLE
void sendBroadcast(
const QString &,
const QString &attr =
"text");
141 QFuture<PdCom::Variable>
find(
const QString&);
142 QFuture<VariableList>
list(
const QString& =
"");
182 template<
class Class,
class Function>
183 QFutureWatcher<PdCom::Variable>&
find(
const QString& path, Class *obj, Function&& callback);
184 template<
class Class,
class Function>
185 QFutureWatcher<VariableList>&
list(
const QString& path, Class *obj, Function&& callback);
186 template<
class Class,
class Function>
187 QFutureWatcher<void>&
ping(Class *obj, Function&& callback);
188 template<
class Class,
class Function>
189 QFutureWatcher<std::vector<PdCom::ClientStatistics>>&
240 std::string
hostname()
const override;
241 int read(
char *,
int)
override;
242 void write(
const char *,
size_t)
override;
243 void flush()
override;
246 const std::string &message,
247 const std::string &attr,
248 std::chrono::nanoseconds time_ns,
249 const std::string &user)
override;
251 void findReply(PdCom::Variable
const& var)
override;
252 void listReply(std::vector<PdCom::Variable> vars, std::vector<std::string> dirs)
override;
261 const char *signal = 0,
262 const QObject *receiver = 0,
263 const char *method = 0
267 using PdCom::Process::setMessageManager;
290 const QString &message,
292 std::uint64_t time_ns,
293 const QString &user);
309template<
class Class,
class Function>
311 const QString& path, Class *obj, Function&& callback)
314 ans.setFuture(
find(path));
320template<
class Class,
class Function>
321inline QFutureWatcher<VariableList>&
Process::list(
const QString& path, Class *obj, Function&& callback)
324 ans.setFuture(
list(path));
330template<
class Class,
class Function>
340template<
class Class,
class Function>
341inline QFutureWatcher<std::vector<PdCom::ClientStatistics>>&
#define QTPDCOM_PUBLIC
Definition Export.h:30
Q_DECLARE_OPAQUE_POINTER(QtPdCom::LoginManager *)
Process(QObject *parent=nullptr)
Constructor.
Definition Process.cpp:145
Class to handle the Authentication process.
Definition LoginManager.h:47
PdCom::Process implementation for Qt.
Definition Process.h:72
QFuture< std::vector< PdCom::ClientStatistics > > getClientStatisticsQt()
Definition Process.cpp:363
std::unique_ptr< Impl > impl
Definition Process.h:236
void pingReply() override
Ping Reply.
Definition Process.cpp:592
QFuture< void > pingQt()
Definition Process.cpp:604
void setCustomCAs(QList< QSslCertificate > cas)
Set list of trusted Certificate Authorities.
Definition Process.cpp:418
void connectionStatusChanged()
ConnectionState connectionState
Definition Process.h:75
Q_INVOKABLE void sendBroadcast(const QString &, const QString &attr="text")
Send a broadcast message.
Definition Process.cpp:376
void clientStatisticsReply(std::vector< PdCom::ClientStatistics > statistics) override
Definition Process.cpp:836
bool connected
The process is connected and ready.
Definition Process.h:74
QVariant name
Definition Process.h:82
QUrl url
Definition Process.h:79
void socketError()
There was a socket error.
Definition Process.cpp:705
void write(const char *, size_t) override
Sends data via the socket.
Definition Process.cpp:523
void findReply(PdCom::Variable const &var) override
Definition Process.cpp:779
QString getApplicationName() const
Definition Process.cpp:200
QtPdCom::LoginManager * loginManager
Definition Process.h:81
ConnectionState getConnectionState() const
Definition Process.cpp:290
void socketRead()
The socket has new data to read.
Definition Process.cpp:738
QFuture< PdCom::Variable > find(const QString &)
Find a Variable.
Definition Process.cpp:330
void socketDisconnected()
Socket disconnected.
Definition Process.cpp:671
void setApplicationName(const QString &)
Sets the application name.
Definition Process.cpp:195
bool isConnected() const
Definition Process.cpp:300
SslCaMode
Definition Process.h:86
QVariant nameQt() const
Remote process name string.
Definition Process.cpp:205
void setClientCertificate(const QSslCertificate &cert, const QSslKey &key)
Provide a client certificate.
Definition Process.cpp:410
static void setDefaultProcess(QtPdCom::Process *)
Set default process "manually".
Definition Process.cpp:434
QString applicationName
Definition Process.h:80
int getPort() const
Definition Process.cpp:826
SslCaMode sslCaMode
Definition Process.h:76
void connected() override
void processConnected()
Connection established.
QUrl getUrl() const
Definition Process.cpp:821
Q_INVOKABLE quint64 getRxBytes() const
Definition Process.cpp:383
static QtPdCom::Process * getDefaultProcess()
Definition Process.cpp:425
std::string hostname() const override
Definition Process.cpp:490
SslCaMode getCaMode() const
Get Traffic Encryption mode.
Definition Process.cpp:404
ConnectionState
State of the process connection.
Definition Process.h:104
@ ConnectedError
An error happened, after the connection was established.
Definition Process.h:109
@ Disconnected
Process disconnected.
Definition Process.h:105
@ Connecting
Currently connecting.
Definition Process.h:106
@ Connected
Process connection established.
Definition Process.h:107
@ ConnectError
An error happened while connecting.
Definition Process.h:108
QVariant version
Definition Process.h:83
QVariant versionQt() const
Remote process version string.
Definition Process.cpp:215
QString getHost() const
Definition Process.cpp:831
void listReply(std::vector< PdCom::Variable > vars, std::vector< std::string > dirs) override
Definition Process.cpp:793
void socketConnected()
Socket connection established.
Definition Process.cpp:658
QFuture< VariableList > list(const QString &="")
Wrapper function for Process::list.
Definition Process.cpp:348
void disconnected()
Disconnected gracefully.
void broadcastReply(const std::string &message, const std::string &attr, std::chrono::nanoseconds time_ns, const std::string &user) override
Broadcast Reply.
Definition Process.cpp:574
void broadcastReceived(const QString &message, const QString &attr, std::uint64_t time_ns, const QString &user)
void error()
Connection error.
int port
Definition Process.h:77
int read(char *, int) override
Read data from the socket.
Definition Process.cpp:503
const QString & getErrorString() const
Definition Process.cpp:310
LoginManager * getLoginManager() const
Definition Process.cpp:466
QFutureWatcher< void > & ping(Class *obj, Function &&callback)
Definition Process.h:331
void setCaMode(SslCaMode mode)
Set Traffic Encryption mode.
Definition Process.cpp:395
void flush() override
Flushed the socket.
Definition Process.cpp:550
QString getPeerName() const
Definition Process.cpp:320
Q_INVOKABLE quint64 getTxBytes() const
Definition Process.cpp:390
PdCom::MessageManagerBase * getMessageManager() const
Definition Process.cpp:441
void setLoginManager(LoginManager *lm)
Set the Login Manager.
Definition Process.cpp:448
QString host
Definition Process.h:78
QFutureWatcher< std::vector< PdCom::ClientStatistics > > & getClientStatistics(Class *obj, Function &&callback)
Definition Process.h:342
bool disconnect(const char *signal=0, const QObject *receiver=0, const char *method=0)
Disconnect method inherited from QObject.
void reset()
Resets the PdCom process.
Definition Process.cpp:617
Definition BroadcastModel.h:32
QFutureWatcher< Result > & createWatcher(Object *obj, Callback &&callback)
Definition FutureWatchers.h:100
Definition Process.cpp:75