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." 61 public QObject,
public PdCom::Process
64 Q_PROPERTY(
bool connected READ isConnected NOTIFY connectionStatusChanged)
65 Q_PROPERTY(
ConnectionState connectionState READ getConnectionState NOTIFY connectionStatusChanged)
66 Q_PROPERTY(
SslCaMode sslCaMode READ getCaMode WRITE setCaMode NOTIFY sslCaModeChanged)
67 Q_PROPERTY(
int port READ getPort NOTIFY connectionStatusChanged)
68 Q_PROPERTY(QString host READ getHost NOTIFY connectionStatusChanged)
69 Q_PROPERTY(QUrl url READ getUrl NOTIFY connectionStatusChanged)
70 Q_PROPERTY(QString applicationName READ getApplicationName WRITE setApplicationName)
82 Process(QObject *parent =
nullptr);
85 void setApplicationName(
const QString &);
86 QString getApplicationName()
const;
87 Q_INVOKABLE
void connectToHost(
const QString &, quint16 = 2345);
88 Q_INVOKABLE
void disconnectFromHost();
100 Q_ENUM(ConnectionState);
102 ConnectionState getConnectionState()
const;
103 bool isConnected()
const;
104 const QString &getErrorString()
const;
105 QString getPeerName()
const;
108 QString getHost()
const;
110 Q_INVOKABLE
void sendBroadcast(
const QString &,
const QString &attr =
"text");
111 quint64 getRxBytes()
const;
112 quint64 getTxBytes()
const;
124 QFuture<PdCom::Variable> find(
const QString&);
125 QFuture<VariableList> list(
const QString& =
"");
126 QFuture<void> pingQt();
127 QFuture<std::vector<PdCom::ClientStatistics>> getClientStatisticsQt();
165 template<
class Class,
class Function>
166 QFutureWatcher<PdCom::Variable>& find(
const QString& path, Class *obj, Function&& callback);
167 template<
class Class,
class Function>
168 QFutureWatcher<VariableList>& list(
const QString& path, Class *obj, Function&& callback);
169 template<
class Class,
class Function>
170 QFutureWatcher<void>& ping(Class *obj, Function&& callback);
171 template<
class Class,
class Function>
172 QFutureWatcher<std::vector<PdCom::ClientStatistics>>&
173 getClientStatistics(Class *obj, Function&& callback);
182 void setCaMode(SslCaMode mode);
188 SslCaMode getCaMode()
const;
196 void setClientCertificate(
const QSslCertificate& cert,
const QSslKey& key);
204 void setCustomCAs(QList<QSslCertificate> cas);
209 PdCom::MessageManagerBase *getMessageManager()
const;
222 std::string applicationName()
const override;
223 std::string hostname()
const override;
224 int read(
char *,
int)
override;
225 void write(
const char *,
size_t)
override;
226 void flush()
override;
227 void connected()
override;
229 const std::string &message,
230 const std::string &attr,
231 std::chrono::nanoseconds time_ns,
232 const std::string &user)
override;
233 void pingReply()
override;
234 void findReply(PdCom::Variable
const& var)
override;
235 void listReply(std::vector<PdCom::Variable> vars, std::vector<std::string> dirs)
override;
236 void clientStatisticsReply(std::vector<PdCom::ClientStatistics> statistics)
override;
244 const char *signal = 0,
245 const QObject *receiver = 0,
246 const char *method = 0
250 using PdCom::Process::setMessageManager;
257 void processConnected();
272 void broadcastReceived(
273 const QString &message,
275 std::uint64_t time_ns,
276 const QString &user);
278 void connectionStatusChanged();
280 void sslCaModeChanged();
284 void socketConnected();
285 void socketDisconnected();
292 template<
class Class,
class Function>
294 const QString& path, Class *obj, Function&& callback)
296 auto& ans = createWatcher<PdCom::Variable>(obj, callback);
297 ans.setFuture(
find(path));
303 template<
class Class,
class Function>
304 inline QFutureWatcher<VariableList>&
Process::list(
const QString& path, Class *obj, Function&& callback)
306 auto& ans = createWatcher<VariableList>(obj, callback);
307 ans.setFuture(
list(path));
313 template<
class Class,
class Function>
316 auto& ans = createWatcher<void>(obj, callback);
323 template<
class Class,
class Function>
324 inline QFutureWatcher<std::vector<PdCom::ClientStatistics>>&
327 auto& ans = createWatcher<std::vector<PdCom::ClientStatistics>>(
Definition: Process.cpp:73
Process connection established.
Definition: Process.h:95
Currently connecting.
Definition: Process.h:94
PdCom::Process implementation for Qt.
Definition: Process.h:60
An error happened while connecting.
Definition: Process.h:96
QFutureWatcher< std::vector< PdCom::ClientStatistics > > & getClientStatistics(Class *obj, Function &&callback)
Definition: Process.h:325
Definition: BroadcastModel.h:32
ConnectionState
State of the process connection.
Definition: Process.h:92
QFuture< VariableList > list(const QString &="")
Wrapper function for Process::list.
Definition: Process.cpp:312
QFuture< std::vector< PdCom::ClientStatistics > > getClientStatisticsQt()
Definition: Process.cpp:326
#define QTPDCOM_PUBLIC
Definition: Export.h:30
QFuture< void > pingQt()
Definition: Process.cpp:557
Definition: LoginManager.h:36
Process disconnected.
Definition: Process.h:93
std::unique_ptr< Impl > impl
Definition: Process.h:219
QFutureWatcher< void > & ping(Class *obj, Function &&callback)
Definition: Process.h:314
QFuture< PdCom::Variable > find(const QString &)
Find a Variable.
Definition: Process.cpp:295
SslCaMode
Definition: Process.h:74