connection_manager_interface.h revision f5bebaef8dd12ff71baaf6fb4d4543db3615a6b4
1// 2// Copyright (C) 2015 The Android Open Source Project 3// 4// Licensed under the Apache License, Version 2.0 (the "License"); 5// you may not use this file except in compliance with the License. 6// You may obtain a copy of the License at 7// 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// See the License for the specific language governing permissions and 14// limitations under the License. 15// 16 17#ifndef UPDATE_ENGINE_CONNECTION_MANAGER_INTERFACE_H_ 18#define UPDATE_ENGINE_CONNECTION_MANAGER_INTERFACE_H_ 19 20#include <memory> 21 22#include <base/macros.h> 23 24#include "update_engine/connection_utils.h" 25 26namespace chromeos_update_engine { 27 28class SystemState; 29 30// This class exposes a generic interface to the connection manager 31// (e.g FlimFlam, Shill, etc.) to consolidate all connection-related 32// logic in update_engine. 33class ConnectionManagerInterface { 34 public: 35 virtual ~ConnectionManagerInterface() = default; 36 37 // Populates |out_type| with the type of the network connection 38 // that we are currently connected and |out_tethering| with the estimate of 39 // whether that network is being tethered. 40 virtual bool GetConnectionProperties(ConnectionType* out_type, 41 ConnectionTethering* out_tethering) = 0; 42 43 // Returns true if we're allowed to update the system when we're 44 // connected to the internet through the given network connection type and the 45 // given tethering state. 46 virtual bool IsUpdateAllowedOver(ConnectionType type, 47 ConnectionTethering tethering) const = 0; 48 49 protected: 50 ConnectionManagerInterface() = default; 51 52 private: 53 DISALLOW_COPY_AND_ASSIGN(ConnectionManagerInterface); 54}; 55 56namespace connection_manager { 57// Factory function which creates a ConnectionManager. 58std::unique_ptr<ConnectionManagerInterface> CreateConnectionManager( 59 SystemState* system_state); 60} 61 62} // namespace chromeos_update_engine 63 64#endif // UPDATE_ENGINE_CONNECTION_MANAGER_INTERFACE_H_ 65