summaryrefslogtreecommitdiff
path: root/include/CommonAPI/DBus/DBusInstanceAvailabilityStatusChangedEvent.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/CommonAPI/DBus/DBusInstanceAvailabilityStatusChangedEvent.hpp')
-rw-r--r--include/CommonAPI/DBus/DBusInstanceAvailabilityStatusChangedEvent.hpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/include/CommonAPI/DBus/DBusInstanceAvailabilityStatusChangedEvent.hpp b/include/CommonAPI/DBus/DBusInstanceAvailabilityStatusChangedEvent.hpp
index 1f5bcc2..9be2e9a 100644
--- a/include/CommonAPI/DBus/DBusInstanceAvailabilityStatusChangedEvent.hpp
+++ b/include/CommonAPI/DBus/DBusInstanceAvailabilityStatusChangedEvent.hpp
@@ -26,8 +26,7 @@ namespace DBus {
// TODO Check to move logic to DBusServiceRegistry, now every proxy will deserialize the messages!
class DBusInstanceAvailabilityStatusChangedEvent:
- public ProxyManager::InstanceAvailabilityStatusChangedEvent,
- public DBusProxyConnection::DBusSignalHandler {
+ public ProxyManager::InstanceAvailabilityStatusChangedEvent {
public:
typedef std::function<void(const CallStatus &, const std::vector<DBusAddress> &)> GetAvailableServiceInstancesCallback;
@@ -38,8 +37,6 @@ class DBusInstanceAvailabilityStatusChangedEvent:
COMMONAPI_EXPORT virtual ~DBusInstanceAvailabilityStatusChangedEvent();
- COMMONAPI_EXPORT virtual void onSignalDBusMessage(const DBusMessage& dbusMessage);
-
COMMONAPI_EXPORT void getAvailableServiceInstances(CommonAPI::CallStatus &_status, std::vector<DBusAddress> &_availableServiceInstances);
COMMONAPI_EXPORT std::future<CallStatus> getAvailableServiceInstancesAsync(GetAvailableServiceInstancesCallback _callback);
@@ -50,6 +47,15 @@ class DBusInstanceAvailabilityStatusChangedEvent:
ProxyManager::GetInstanceAvailabilityStatusCallback _callback);
protected:
+
+ class SignalHandler : public DBusProxyConnection::DBusSignalHandler {
+ public:
+ COMMONAPI_EXPORT SignalHandler(DBusInstanceAvailabilityStatusChangedEvent* _instanceAvblStatusEvent);
+ COMMONAPI_EXPORT virtual void onSignalDBusMessage(const DBusMessage& dbusMessage);
+ private:
+ DBusInstanceAvailabilityStatusChangedEvent* instanceAvblStatusEvent_;
+ };
+
virtual void onFirstListenerAdded(const Listener&);
virtual void onLastListenerRemoved(const Listener&);
@@ -76,7 +82,9 @@ class DBusInstanceAvailabilityStatusChangedEvent:
void translate(const DBusObjectManagerStub::DBusObjectPathAndInterfacesDict &_dict,
std::vector<DBusAddress> &_serviceInstances);
+ std::shared_ptr<SignalHandler> signalHandler_;
DBusProxy &proxy_;
+ std::weak_ptr<DBusProxy> proxyWeakPtr_;
std::string observedDbusInterfaceName_;
std::string observedCapiInterfaceName_;
DBusProxyConnection::DBusSignalHandlerToken interfacesAddedSubscription_;