KUnifiedPush

connector.h
1 /*
2  SPDX-FileCopyrightText: 2022 Volker Krause <vkrause@kde.org>
3  SPDX-License-Identifier: LGPL-2.0-or-later
4 */
5 
6 #ifndef KUNIFIEDPUSH_CONNECTOR_H
7 #define KUNIFIEDPUSH_CONNECTOR_H
8 
9 #include "kunifiedpush_export.h"
10 
11 #include <QObject>
12 
13 #include <memory>
14 
15 /** Client-side integration with UnifiedPush. */
16 namespace KUnifiedPush {
17 
18 class ConnectorPrivate;
19 
20 /** Client connector to UnifiedPush.
21  * Registers with a local UnifedPush distributor if present
22  * and obtains an endpoint that can be used for push notifications.
23  */
24 class KUNIFIEDPUSH_EXPORT Connector : public QObject
25 {
26  Q_OBJECT
27  Q_PROPERTY(QString endpoint READ endpoint NOTIFY endpointChanged)
28  Q_PROPERTY(State state READ state NOTIFY stateChanged)
29 public:
30  /** Create a new connector instance.
31  * @param serviceName The application identifier, same as used for registration
32  * on D-Bus and for D-Bus activation.
33  */
34  explicit Connector(const QString &serviceName, QObject *parent = nullptr);
35  ~Connector();
36 
37  /** HTTP endpoint to trigger the push notification.
38  * This needs to be communicated to the corresponding server-side application.
39  * @see endpointChanged
40  */
41  QString endpoint() const;
42 
43  /** Register this client.
44  * This is for subscribing to push notifications and is only needed the first
45  * time an application uses this, or after explicitly unregistering. The registration
46  * is persisted until explicitly changed.
47  * @param description A human-readable explanation what push notifications are used
48  * for by this application.
49  */
50  void registerClient(const QString &description);
51 
52  /** Unregister this client.
53  * This is for permanently unsubscribing, do not use on regular application shutdown.
54  */
55  void unregisterClient();
56 
57  /** Connector state. */
58  enum State {
59  Unregistered, ///< Connector is not yet registered, or explicitly unregistered.
60  Registering, ///< Connector is registering with the push provider.
61  Registered, ///< Connector is registered and thus operational.
62  NoDistributor, ///< Connector cannot find a UnifiedPush distributor to register at.
63  Error, ///< Any other error condition.
64  };
65  Q_ENUM(State)
66  /** State of the connector. */
67  State state() const;
68  // TODO error message
69 
70 Q_SIGNALS:
71  /** Emitted for each newly received push message. */
72  void messageReceived(const QByteArray &msg);
73 
74  /** Emitted when a new endpoint URL has been received. */
75  void endpointChanged(const QString &endpoint);
76 
77  /** Emitted when the connector state changes. */
78  void stateChanged(KUnifiedPush::Connector::State state);
79 
80 private:
81  ConnectorPrivate *const d;
82 };
83 
84 }
85 
86 #endif
Client-side integration with UnifiedPush.
Definition: connector.h:16
@ NoDistributor
Connector cannot find a UnifiedPush distributor to register at.
Definition: connector.h:62
Client connector to UnifiedPush.
Definition: connector.h:24
State
Connector state.
Definition: connector.h:58
@ Error
Any other error condition.
Definition: connector.h:63
@ Registered
Connector is registered and thus operational.
Definition: connector.h:61
@ Unregistered
Connector is not yet registered, or explicitly unregistered.
Definition: connector.h:59
@ Registering
Connector is registering with the push provider.
Definition: connector.h:60
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Thu Feb 15 2024 03:49:11 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.