You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.6 KiB
101 lines
3.6 KiB
// |
|
// Copyright (C) 2014 The Android Open Source Project |
|
// |
|
// Licensed under the Apache License, Version 2.0 (the "License"); |
|
// you may not use this file except in compliance with the License. |
|
// You may obtain a copy of the License at |
|
// |
|
// http://www.apache.org/licenses/LICENSE-2.0 |
|
// |
|
// Unless required by applicable law or agreed to in writing, software |
|
// distributed under the License is distributed on an "AS IS" BASIS, |
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
// See the License for the specific language governing permissions and |
|
// limitations under the License. |
|
// |
|
|
|
#ifndef UPDATE_ENGINE_UPDATE_MANAGER_REAL_SHILL_PROVIDER_H_ |
|
#define UPDATE_ENGINE_UPDATE_MANAGER_REAL_SHILL_PROVIDER_H_ |
|
|
|
// TODO(garnold) Much of the functionality in this module was adapted from the |
|
// update engine's connection_manager. We need to make sure to deprecate use of |
|
// connection manager when the time comes. |
|
|
|
#include <memory> |
|
#include <string> |
|
|
|
#include <base/time/time.h> |
|
#include <dbus/object_path.h> |
|
|
|
#include "update_engine/common/clock_interface.h" |
|
#include "update_engine/shill_proxy_interface.h" |
|
#include "update_engine/update_manager/generic_variables.h" |
|
#include "update_engine/update_manager/shill_provider.h" |
|
|
|
namespace chromeos_update_manager { |
|
|
|
// ShillProvider concrete implementation. |
|
class RealShillProvider : public ShillProvider { |
|
public: |
|
RealShillProvider(chromeos_update_engine::ShillProxyInterface* shill_proxy, |
|
chromeos_update_engine::ClockInterface* clock) |
|
: shill_proxy_(shill_proxy), clock_(clock) {} |
|
|
|
~RealShillProvider() override = default; |
|
|
|
// Initializes the provider and returns whether it succeeded. |
|
bool Init(); |
|
|
|
Variable<bool>* var_is_connected() override { |
|
return &var_is_connected_; |
|
} |
|
|
|
Variable<chromeos_update_engine::ConnectionType>* var_conn_type() override { |
|
return &var_conn_type_; |
|
} |
|
|
|
Variable<chromeos_update_engine::ConnectionTethering>* var_conn_tethering() override { |
|
return &var_conn_tethering_; |
|
} |
|
|
|
Variable<base::Time>* var_conn_last_changed() override { |
|
return &var_conn_last_changed_; |
|
} |
|
|
|
private: |
|
// A handler for ManagerProxy.PropertyChanged signal. |
|
void OnManagerPropertyChanged(const std::string& name, |
|
const brillo::Any& value); |
|
|
|
// Called when the signal in ManagerProxy.PropertyChanged is connected. |
|
void OnSignalConnected(const std::string& interface_name, |
|
const std::string& signal_name, |
|
bool successful); |
|
|
|
// Get the connection and populate the type and tethering status of the given |
|
// default connection. |
|
bool ProcessDefaultService(const dbus::ObjectPath& default_service_path); |
|
|
|
// The current default service path, if connected. "/" means not connected. |
|
dbus::ObjectPath default_service_path_{"uninitialized"}; |
|
|
|
// The mockable interface to access the shill DBus proxies. |
|
std::unique_ptr<chromeos_update_engine::ShillProxyInterface> shill_proxy_; |
|
|
|
// A clock abstraction (mockable). |
|
chromeos_update_engine::ClockInterface* const clock_; |
|
|
|
// The provider's variables. |
|
AsyncCopyVariable<bool> var_is_connected_{"is_connected"}; |
|
AsyncCopyVariable<chromeos_update_engine::ConnectionType> var_conn_type_{ |
|
"conn_type"}; |
|
AsyncCopyVariable<chromeos_update_engine::ConnectionTethering> |
|
var_conn_tethering_{"conn_tethering"}; |
|
AsyncCopyVariable<base::Time> var_conn_last_changed_{"conn_last_changed"}; |
|
|
|
DISALLOW_COPY_AND_ASSIGN(RealShillProvider); |
|
}; |
|
|
|
} // namespace chromeos_update_manager |
|
|
|
#endif // UPDATE_ENGINE_UPDATE_MANAGER_REAL_SHILL_PROVIDER_H_
|
|
|