1a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// 2a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// Copyright (C) 2015 The Android Open Source Project 3a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// 4a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// Licensed under the Apache License, Version 2.0 (the "License"); 5a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// you may not use this file except in compliance with the License. 6a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// You may obtain a copy of the License at 7a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// 8a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// http://www.apache.org/licenses/LICENSE-2.0 9a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// 10a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// Unless required by applicable law or agreed to in writing, software 11a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// distributed under the License is distributed on an "AS IS" BASIS, 12a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// See the License for the specific language governing permissions and 14a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// limitations under the License. 15a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// 16a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu 17a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu#ifndef APMANAGER_CONTROL_INTERFACE_H_ 18a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu#define APMANAGER_CONTROL_INTERFACE_H_ 19a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu 20a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu#include <base/callback.h> 21a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu#include <base/macros.h> 22a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu 2300029783fc5a927dd0cddc03bdcd8e760655ce46Peter Qiu#include "apmanager/config_adaptor_interface.h" 24f933540bb968efa2744ee48b40ab713ccd358d51Peter Qiu#include "apmanager/device_adaptor_interface.h" 25a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu#include "apmanager/firewall_proxy_interface.h" 26685dd4acea083dc74105edbdf8a06e539c291a45Peter Qiu#include "apmanager/manager_adaptor_interface.h" 270e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu#include "apmanager/service_adaptor_interface.h" 28a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu#include "apmanager/shill_proxy_interface.h" 29a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu 30a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiunamespace apmanager { 31a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu 3200029783fc5a927dd0cddc03bdcd8e760655ce46Peter Qiuclass Config; 33f933540bb968efa2744ee48b40ab713ccd358d51Peter Qiuclass Device; 34685dd4acea083dc74105edbdf8a06e539c291a45Peter Qiuclass Manager; 350e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiuclass Service; 36f933540bb968efa2744ee48b40ab713ccd358d51Peter Qiu 37a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// This is the Interface for an object factory that creates adaptor/proxy 38a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu// objects 39a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiuclass ControlInterface { 40a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu public: 41a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu virtual ~ControlInterface() {} 42a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu 430d70fa725563571fff9e91e7a86386d3d1db4667Peter Qiu virtual void Init() = 0; 440d70fa725563571fff9e91e7a86386d3d1db4667Peter Qiu virtual void Shutdown() = 0; 450d70fa725563571fff9e91e7a86386d3d1db4667Peter Qiu 46f933540bb968efa2744ee48b40ab713ccd358d51Peter Qiu // Adaptor creation APIs. 4700029783fc5a927dd0cddc03bdcd8e760655ce46Peter Qiu virtual std::unique_ptr<ConfigAdaptorInterface> CreateConfigAdaptor( 4800029783fc5a927dd0cddc03bdcd8e760655ce46Peter Qiu Config* config, int service_identifier) = 0; 49f933540bb968efa2744ee48b40ab713ccd358d51Peter Qiu virtual std::unique_ptr<DeviceAdaptorInterface> CreateDeviceAdaptor( 50f933540bb968efa2744ee48b40ab713ccd358d51Peter Qiu Device* device) = 0; 51685dd4acea083dc74105edbdf8a06e539c291a45Peter Qiu virtual std::unique_ptr<ManagerAdaptorInterface> CreateManagerAdaptor( 52685dd4acea083dc74105edbdf8a06e539c291a45Peter Qiu Manager* manager) = 0; 530e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu virtual std::unique_ptr<ServiceAdaptorInterface> CreateServiceAdaptor( 540e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu Service* service) = 0; 55f933540bb968efa2744ee48b40ab713ccd358d51Peter Qiu 56a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu // Proxy creation APIs. 57a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu virtual std::unique_ptr<FirewallProxyInterface> CreateFirewallProxy( 58a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu const base::Closure& service_appeared_callback, 59a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu const base::Closure& service_vanished_callback) = 0; 60a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu virtual std::unique_ptr<ShillProxyInterface> CreateShillProxy( 61a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu const base::Closure& service_appeared_callback, 62a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu const base::Closure& service_vanished_callback) = 0; 63a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu}; 64a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu 65a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu} // namespace apmanager 66a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu 67a522e0006b344c6438a18e0a4848e7cdfbf5dd0aPeter Qiu#endif // APMANAGER_CONTROL_INTERFACE_H_ 68