text: // Copyright 2020 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.
  
  #ifndef ATTESTATION_PCA_AGENT_SERVER_PCA_AGENT_DAEMON_H_
  #define ATTESTATION_PCA_AGENT_SERVER_PCA_AGENT_DAEMON_H_
  
  #include <memory>
  
  #include <brillo/daemons/dbus_daemon.h>
  #include <dbus/attestation/dbus-constants.h>
  
  #include "attestation/pca_agent/server/pca_agent_service.h"
  
  namespace attestation {
  namespace pca_agent {
  
  class PcaAgentDaemon : public brillo::DBusServiceDaemon {
   public:
    PcaAgentDaemon() : DBusServiceDaemon(kPcaAgentServiceName) {}
    PcaAgentDaemon(const PcaAgentDaemon&) = delete;
    PcaAgentDaemon& operator=(const PcaAgentDaemon&) = delete;
  
   protected:
    void RegisterDBusObjectsAsync(
        brillo::dbus_utils::AsyncEventSequencer* sequencer) override {
      service_.reset(new PcaAgentService());
      adaptor_.reset(new PcaAgentServiceAdaptor(service_.get(), bus_));
      adaptor_->RegisterAsync(
          sequencer->GetHandler("RegisterAsync() failed", true));
    }
  
   private:
    std::unique_ptr<PcaAgentService> service_;
    std::unique_ptr<PcaAgentServiceAdaptor> adaptor_;
  };
  
  }  // namespace pca_agent
  }  // namespace attestation
  
  #endif  // ATTESTATION_PCA_AGENT_SERVER_PCA_AGENT_DAEMON_H_
  