blob: 6eee1a0529ba2d952fb100eeec37715f22705e64 [file] [log] [blame]
// Copyright 2021 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 RUNTIME_PROBE_SYSTEM_CONTEXT_IMPL_H_
#define RUNTIME_PROBE_SYSTEM_CONTEXT_IMPL_H_
#include <memory>
#include <base/check.h>
#include <debugd/dbus-proxies.h>
#include <brillo/dbus/dbus_connection.h>
#include "runtime_probe/system/context.h"
namespace runtime_probe {
class ContextImpl : public Context {
public:
~ContextImpl() override = default;
org::chromium::debugdProxyInterface* debugd_proxy() override {
CHECK(debugd_proxy_);
return debugd_proxy_.get();
};
HelperInvoker* helper_invoker() override {
CHECK(helper_invoker_);
return helper_invoker_.get();
}
protected:
// This interface should be used through its derived classes.
ContextImpl() = default;
// Setups the dbus connection and the dbus services.
bool SetupDBusServices();
// The object to hold the dbus connection.
brillo::DBusConnection connection_;
// The reference of the dbus connection.
scoped_refptr<dbus::Bus> dbus_bus_;
// The proxy object for dbugd dbus service.
std::unique_ptr<org::chromium::debugdProxyInterface> debugd_proxy_;
// The object for invoking helper.
std::unique_ptr<HelperInvoker> helper_invoker_;
};
} // namespace runtime_probe
#endif // RUNTIME_PROBE_SYSTEM_CONTEXT_IMPL_H_