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
74 Q_PROPERTY(
bool connected READ isConnected NOTIFY connectionStatusChanged)
75 Q_PROPERTY(
ConnectionState connectionState READ getConnectionState NOTIFY connectionStatusChanged)
76 Q_PROPERTY(
SslCaMode sslCaMode READ getCaMode WRITE setCaMode NOTIFY sslCaModeChanged)
77 Q_PROPERTY(
int port READ getPort NOTIFY connectionStatusChanged)
78 Q_PROPERTY(QString host READ getHost NOTIFY connectionStatusChanged)
79 Q_PROPERTY(QUrl url READ getUrl NOTIFY connectionStatusChanged)
80 Q_PROPERTY(QString applicationName READ getApplicationName WRITE setApplicationName)
82 Q_PROPERTY(QVariant name READ nameQt NOTIFY connectionStatusChanged)
83 Q_PROPERTY(QVariant version READ versionQt NOTIFY connectionStatusChanged)
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();
112 Q_ENUM(ConnectionState);
114 ConnectionState getConnectionState()
const;
115 bool isConnected()
const;
116 const QString &getErrorString()
const;
117 QString getPeerName()
const;
120 QString getHost()
const;
122 Q_INVOKABLE
void sendBroadcast(
const QString &,
const QString &attr =
"text");
123 quint64 getRxBytes()
const;
124 quint64 getTxBytes()
const;
127 QVariant nameQt()
const;
129 QVariant versionQt()
const;
141 QFuture<PdCom::Variable> find(
const QString&);
142 QFuture<VariableList> list(
const QString& =
"");
143 QFuture<void> pingQt();
144 QFuture<std::vector<PdCom::ClientStatistics>> getClientStatisticsQt();
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>>&
190 getClientStatistics(Class *obj, Function&& callback);
199 void setCaMode(SslCaMode mode);
205 SslCaMode getCaMode()
const;
213 void setClientCertificate(
const QSslCertificate& cert,
const QSslKey& key);
221 void setCustomCAs(QList<QSslCertificate> cas);
226 PdCom::MessageManagerBase *getMessageManager()
const;
239 std::string applicationName()
const override;
240 std::string hostname()
const override;
241 int read(
char *,
int)
override;
242 void write(
const char *,
size_t)
override;
243 void flush()
override;
244 void connected()
override;
246 const std::string &message,
247 const std::string &attr,
248 std::chrono::nanoseconds time_ns,
249 const std::string &user)
override;
250 void pingReply()
override;
251 void findReply(PdCom::Variable
const& var)
override;
252 void listReply(std::vector<PdCom::Variable> vars, std::vector<std::string> dirs)
override;
253 void clientStatisticsReply(std::vector<PdCom::ClientStatistics> statistics)
override;
261 const char *signal = 0,
262 const QObject *receiver = 0,
263 const char *method = 0
267 using PdCom::Process::setMessageManager;
274 void processConnected();
289 void broadcastReceived(
290 const QString &message,
292 std::uint64_t time_ns,
293 const QString &user);
295 void connectionStatusChanged();
297 void sslCaModeChanged();
301 void socketConnected();
302 void socketDisconnected();
309 template<
class Class,
class Function>
311 const QString& path, Class *obj, Function&& callback)
313 auto& ans = createWatcher<PdCom::Variable>(obj, callback);
314 ans.setFuture(
find(path));
320 template<
class Class,
class Function>
321 inline QFutureWatcher<VariableList>&
Process::list(
const QString& path, Class *obj, Function&& callback)
323 auto& ans = createWatcher<VariableList>(obj, callback);
324 ans.setFuture(
list(path));
330 template<
class Class,
class Function>
333 auto& ans = createWatcher<void>(obj, callback);
340 template<
class Class,
class Function>
341 inline QFutureWatcher<std::vector<PdCom::ClientStatistics>>&
344 auto& ans = createWatcher<std::vector<PdCom::ClientStatistics>>(
355 #endif // QTPDCOM_PROCESS_H Definition: Process.cpp:74
Process connection established.
Definition: Process.h:107
Currently connecting.
Definition: Process.h:106
PdCom::Process implementation for Qt.
Definition: Process.h:70
An error happened while connecting.
Definition: Process.h:108
QFutureWatcher< std::vector< PdCom::ClientStatistics > > & getClientStatistics(Class *obj, Function &&callback)
Definition: Process.h:342
Definition: BroadcastModel.h:32
ConnectionState
State of the process connection.
Definition: Process.h:104
Q_DECLARE_OPAQUE_POINTER(QtPdCom::LoginManager *)
QFuture< VariableList > list(const QString &="")
Wrapper function for Process::list.
Definition: Process.cpp:348
QFuture< std::vector< PdCom::ClientStatistics > > getClientStatisticsQt()
Definition: Process.cpp:363
#define QTPDCOM_PUBLIC
Definition: Export.h:30
QFuture< void > pingQt()
Definition: Process.cpp:604
Class to handle the Authentication process.
Definition: LoginManager.h:46
Process disconnected.
Definition: Process.h:105
std::unique_ptr< Impl > impl
Definition: Process.h:236
QFutureWatcher< void > & ping(Class *obj, Function &&callback)
Definition: Process.h:331
QFuture< PdCom::Variable > find(const QString &)
Find a Variable.
Definition: Process.cpp:330
SslCaMode
Definition: Process.h:86