| // Copyright 2019 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "hermes/daemon.h" |
| |
| #include <memory> |
| #include <utility> |
| |
| #include <base/message_loop/message_loop.h> |
| #include <chromeos/dbus/service_constants.h> |
| #include <google-lpa/lpa/core/lpa.h> |
| |
| #include "hermes/card_qrtr.h" |
| #include "hermes/dbus_bindings/org.chromium.Hermes.h" |
| #include "hermes/socket_qrtr.h" |
| |
| namespace hermes { |
| |
| Daemon::Daemon() |
| : DBusServiceDaemon(kHermesServiceName), |
| executor_(base::MessageLoop::current()), |
| smdp_(&logger_, &executor_) { |
| card_ = CardQrtr::Create(std::make_unique<SocketQrtr>(), &logger_, |
| &executor_); |
| |
| lpa::core::Lpa::Builder b; |
| b.SetEuiccCard(card_.get()) |
| .SetSmdpClientFactory(&smdp_) |
| .SetSmdsClientFactory(&smds_) |
| .SetLogger(&logger_); |
| lpa_ = b.Build(); |
| } |
| |
| void Daemon::RegisterDBusObjectsAsync( |
| brillo::dbus_utils::AsyncEventSequencer* sequencer) { |
| dbus_object_ = std::make_unique<brillo::dbus_utils::DBusObject>( |
| nullptr, bus_, |
| org::chromium::HermesAdaptor::GetObjectPath()); |
| dbus_adaptor_ = std::make_unique<DBusAdaptor>(lpa_.get(), &executor_); |
| dbus_adaptor_->RegisterWithDBusObject(dbus_object_.get()); |
| dbus_object_->RegisterAsync( |
| sequencer->GetHandler("RegisterAsync() failed.", true)); |
| } |
| |
| } // namespace hermes |