blob: e32d5b9fe4ee943121ae67cb88012fdd1e68adc9 [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 MINIOS_DBUS_ADAPTORS_DBUS_ADAPTOR_H_
#define MINIOS_DBUS_ADAPTORS_DBUS_ADAPTOR_H_
#include <memory>
#include <string>
#include <vector>
#include <brillo/dbus/dbus_method_response.h>
#include <minios/proto_bindings/minios.pb.h>
#include "minios/dbus_adaptors/org.chromium.MiniOsInterface.h"
#include "minios/minios_interface.h"
#include "minios/network_manager_interface.h"
namespace minios {
class DBusService : public org::chromium::MiniOsInterfaceInterface,
public NetworkManagerInterface::Observer {
public:
explicit DBusService(
std::shared_ptr<MiniOsInterface> mini_os,
std::shared_ptr<NetworkManagerInterface> network_manager);
~DBusService() = default;
DBusService(const DBusService&) = delete;
DBusService& operator=(const DBusService&) = delete;
bool GetState(brillo::ErrorPtr* error, State* state_out) override;
using ConnectResponse =
std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<>>;
void Connect(ConnectResponse response,
const std::string& ssid,
const std::string& passphrase) override;
using GetNetworksResponse = std::unique_ptr<
brillo::dbus_utils::DBusMethodResponse<std::vector<std::string>>>;
void GetNetworks(GetNetworksResponse response) override;
private:
// `NetworkManagerInterface::Observer` overrides.
void OnConnect(const std::string& ssid, brillo::Error* error) override;
void OnGetNetworks(const std::vector<std::string>& networks,
brillo::Error* error) override;
std::shared_ptr<MiniOsInterface> mini_os_;
ConnectResponse connect_response_;
GetNetworksResponse get_networks_response_;
std::shared_ptr<NetworkManagerInterface> network_manager_;
};
class DBusAdaptor : public org::chromium::MiniOsInterfaceAdaptor {
public:
explicit DBusAdaptor(std::unique_ptr<DBusService> dbus_service);
~DBusAdaptor() = default;
DBusAdaptor(const DBusAdaptor&) = delete;
DBusAdaptor& operator=(const DBusAdaptor&) = delete;
private:
std::unique_ptr<DBusService> dbus_service_;
};
} // namespace minios
#endif // MINIOS_DBUS_ADAPTORS_DBUS_ADAPTOR_H_