swift
duplexproxy.cpp
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2020 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
7 
9 #include "misc/identifier.h"
10 #include "misc/variantlist.h"
11 
12 namespace swift::misc::shared_state::dbus
13 {
14  CDuplexProxy::CDuplexProxy(const QDBusConnection &connection, const QString &service, QObject *parent)
15  : IDuplex(parent)
16  {
18  m_interface = new CGenericDBusInterface(service, path, SWIFT_MISC_DUPLEX_INTERFACE, connection, this);
19  m_interface->relayParentSignals();
20  }
21 
22  void CDuplexProxy::postEvent(const QString &channel, const CVariant &param)
23  {
24  m_interface->callDBus(QLatin1String("postEvent"), channel, param);
25  }
26 
27  void CDuplexProxy::setSubscription(const QString &channel, const CVariantList &filters)
28  {
29  m_interface->callDBus(QLatin1String("setSubscription"), channel, filters);
30  }
31 
32  void CDuplexProxy::requestPeerSubscriptions() { m_interface->callDBus(QLatin1String("requestPeerSubscriptions")); }
33 
34  void CDuplexProxy::submitRequest(const QString &channel, const CVariant &param, quint32 token)
35  {
36  m_interface->callDBus(QLatin1String("submitRequest"), channel, param, token);
37  }
38 
39  void CDuplexProxy::reply(const CVariant &param, quint32 token)
40  {
41  m_interface->callDBus(QLatin1String("reply"), param, token);
42  }
43 
44  void CDuplexProxy::advertise(const QString &channel) { m_interface->callDBus(QLatin1String("advertise"), channel); }
45 
46  void CDuplexProxy::withdraw(const QString &channel) { m_interface->callDBus(QLatin1String("withdraw"), channel); }
47 } // namespace swift::misc::shared_state::dbus
Used for hand written interface based on virtual methods.
void callDBus(QLatin1String method, Args &&...args)
Call DBus, no return value.
void relayParentSignals()
For each signal in parent, attempt to connect to it an interface signal of the same name.
static const CIdentifier & anonymous()
Returns an anonymous identifier, which is a valid identifier without name.
Definition: identifier.cpp:78
QString toDBusObjectPath(const QString &root={}) const
Produces a DBus object path from the identifier.
Definition: identifier.cpp:131
Wrapper around QVariant which provides transparent access to CValueObject methods of the contained ob...
Definition: variant.h:66
Value object encapsulating a list of variants.
Definition: variantlist.h:29
virtual void withdraw(const QString &channel)
Client advertises that it can no longer handle requests for the given channel.
Definition: duplexproxy.cpp:46
virtual void postEvent(const QString &channel, const swift::misc::CVariant &param)
Client posts an event to the server.
Definition: duplexproxy.cpp:22
virtual void submitRequest(const QString &channel, const swift::misc::CVariant &param, quint32 token)
Client submits a request to the server. Reply is returned via a future.
Definition: duplexproxy.cpp:34
virtual void setSubscription(const QString &channel, const swift::misc::CVariantList &filters)
Client announces its subscription to an event channel.
Definition: duplexproxy.cpp:27
virtual void requestPeerSubscriptions()
Client requests to be notified of all other clients' subscriptions.
Definition: duplexproxy.cpp:32
virtual void reply(const swift::misc::CVariant &param, quint32 token)
Client replies to a submitted request.
Definition: duplexproxy.cpp:39
virtual void advertise(const QString &channel)
Client advertises that it can handle requests for the given channel.
Definition: duplexproxy.cpp:44
CDuplexProxy(const QDBusConnection &connection, const QString &service, QObject *parent=nullptr)
Constructor.
Definition: duplexproxy.cpp:14
Abstract interface for the spoke in a star topology.
Definition: duplex.h:36
#define SWIFT_MISC_DUPLEX_PATH_ROOT
DBus object path root for sharedstate hub.
Definition: duplex.h:22
#define SWIFT_MISC_DUPLEX_INTERFACE
DBus interface for sharedstate hub.
Definition: duplex.h:19