blob: f412155b8669e525d903fa7002ec82118c1163a4 [file] [log] [blame]
// Copyright 2018 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 DIAGNOSTICS_WILCO_DTC_SUPPORTD_WILCO_DTC_SUPPORTD_DBUS_SERVICE_H_
#define DIAGNOSTICS_WILCO_DTC_SUPPORTD_WILCO_DTC_SUPPORTD_DBUS_SERVICE_H_
#include <string>
#include <base/files/scoped_file.h>
#include <base/macros.h>
#include <brillo/errors/error.h>
#include <dbus/exported_object.h>
#include <dbus/message.h>
namespace diagnostics {
// Implements the "org.chromium.DiagnosticsdInterface" D-Bus interface exposed
// by the wilco_dtc_supportd daemon (see constants for the API methods at
// src/platform/system_api/dbus/diagnosticsd/dbus-constants.h).
class WilcoDtcSupportdDBusService final {
public:
class Delegate {
public:
virtual ~Delegate() = default;
// Called when a Mojo invitation is received via a D-Bus call.
//
// Should start the wilco_dtc_supportd Mojo service factory that talks
// through the pipe specified by the passed |mojo_pipe_fd|. Should return
// whether the Mojo service factory was successfully started, and when false
// should fill |*error_message|.
//
// In production the pipe's parent side end belongs to the Chrome browser
// process.
virtual bool StartMojoServiceFactory(base::ScopedFD mojo_pipe_fd,
std::string* error_message) = 0;
};
explicit WilcoDtcSupportdDBusService(Delegate* delegate);
~WilcoDtcSupportdDBusService();
// Implementation of the "org.chromium.DiagnosticsdInterface" D-Bus interface:
bool BootstrapMojoConnection(brillo::ErrorPtr* error,
const base::ScopedFD& mojo_fd);
private:
// Implements BootstrapMojoConnection(), with the main difference in how
// errors are returned.
bool DoBootstrapMojoConnection(const base::ScopedFD& mojo_fd,
std::string* error_message);
// Unowned. The delegate should outlive this instance.
Delegate* const delegate_;
DISALLOW_COPY_AND_ASSIGN(WilcoDtcSupportdDBusService);
};
} // namespace diagnostics
#endif // DIAGNOSTICS_WILCO_DTC_SUPPORTD_WILCO_DTC_SUPPORTD_DBUS_SERVICE_H_