1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 #include "DBusServiceStatusEvent.h"
5 #include "DBusServiceRegistry.h"
11 DBusServiceStatusEvent::DBusServiceStatusEvent(std::shared_ptr<DBusServiceRegistry> registry) :
15 void DBusServiceStatusEvent::onFirstListenerAdded(const std::string& serviceName, const Listener& listener) {
17 registry_->registerAvailabilityListener(serviceName, std::bind(
18 &DBusServiceStatusEvent::availabilityEvent,
21 std::placeholders::_1));
25 void DBusServiceStatusEvent::availabilityEvent(const std::string& name, const bool& available) {
27 const AvailabilityStatus availabilityStatus = !available ? AvailabilityStatus::NOT_AVAILABLE :
28 AvailabilityStatus::AVAILABLE;
29 notifyListeners(name, availabilityStatus);
32 void DBusServiceStatusEvent::onListenerAdded(const std::string& name, const Listener& listener) {
34 const AvailabilityStatus availabilityStatus =
35 !registry_->isServiceInstanceAlive(name) ? AvailabilityStatus::NOT_AVAILABLE :
36 AvailabilityStatus::AVAILABLE;
38 notifyListeners(name, availabilityStatus);
44 } // namespace CommonAPI