1// 2// Copyright (C) 2012 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 SHILL_ADAPTOR_INTERFACES_H_ 18#define SHILL_ADAPTOR_INTERFACES_H_ 19 20#include <string> 21#include <vector> 22 23#include <base/callback.h> 24 25#include "shill/accessor_interface.h" 26 27namespace shill { 28 29class Error; 30 31// These are the functions that a Device adaptor must support 32class DeviceAdaptorInterface { 33 public: 34 virtual ~DeviceAdaptorInterface() {} 35 36 // Getter for the opaque identifier that represents this object on the 37 // RPC interface to which the implementation is adapting. 38 virtual const std::string& GetRpcIdentifier() = 0; 39 40 virtual void EmitBoolChanged(const std::string& name, bool value) = 0; 41 virtual void EmitUintChanged(const std::string& name, uint32_t value) = 0; 42 virtual void EmitUint16Changed(const std::string& name, uint16_t value) = 0; 43 virtual void EmitIntChanged(const std::string& name, int value) = 0; 44 virtual void EmitStringChanged(const std::string& name, 45 const std::string& value) = 0; 46 virtual void EmitStringmapChanged(const std::string& name, 47 const Stringmap& value) = 0; 48 virtual void EmitStringmapsChanged(const std::string& name, 49 const Stringmaps& value) = 0; 50 virtual void EmitStringsChanged(const std::string& name, 51 const Strings& value) = 0; 52 virtual void EmitKeyValueStoreChanged(const std::string& name, 53 const KeyValueStore& value) = 0; 54 virtual void EmitRpcIdentifierChanged(const std::string& name, 55 const std::string& value) = 0; 56 virtual void EmitRpcIdentifierArrayChanged( 57 const std::string& name, const std::vector<std::string>& value) = 0; 58}; 59 60// These are the functions that an IPConfig adaptor must support 61class IPConfigAdaptorInterface { 62 public: 63 virtual ~IPConfigAdaptorInterface() {} 64 65 // Getter for the opaque identifier that represents this object on the 66 // RPC interface to which the implementation is adapting. 67 virtual const std::string& GetRpcIdentifier() = 0; 68 69 virtual void EmitBoolChanged(const std::string& name, bool value) = 0; 70 virtual void EmitUintChanged(const std::string& name, uint32_t value) = 0; 71 virtual void EmitIntChanged(const std::string& name, int value) = 0; 72 virtual void EmitStringChanged(const std::string& name, 73 const std::string& value) = 0; 74 virtual void EmitStringsChanged(const std::string& name, 75 const std::vector<std::string>& value) = 0; 76}; 77 78// These are the functions that a Manager adaptor must support 79class ManagerAdaptorInterface { 80 public: 81 virtual ~ManagerAdaptorInterface() {} 82 83 virtual void RegisterAsync( 84 const base::Callback<void(bool)>& completion_callback) = 0; 85 86 // Getter for the opaque identifier that represents this object on the 87 // RPC interface to which the implementation is adapting. 88 virtual const std::string& GetRpcIdentifier() = 0; 89 90 virtual void EmitBoolChanged(const std::string& name, bool value) = 0; 91 virtual void EmitUintChanged(const std::string& name, uint32_t value) = 0; 92 virtual void EmitIntChanged(const std::string& name, int value) = 0; 93 virtual void EmitStringChanged(const std::string& name, 94 const std::string& value) = 0; 95 virtual void EmitStringsChanged(const std::string& name, 96 const std::vector<std::string>& value) = 0; 97 virtual void EmitRpcIdentifierChanged( 98 const std::string& name, 99 const std::string& value) = 0; 100 virtual void EmitRpcIdentifierArrayChanged( 101 const std::string& name, 102 const std::vector<std::string>& value) = 0; 103}; 104 105// These are the functions that a Profile adaptor must support 106class ProfileAdaptorInterface { 107 public: 108 virtual ~ProfileAdaptorInterface() {} 109 110 // Getter for the opaque identifier that represents this object on the 111 // RPC interface to which the implementation is adapting. 112 virtual const std::string& GetRpcIdentifier() = 0; 113 114 virtual void EmitBoolChanged(const std::string& name, bool value) = 0; 115 virtual void EmitUintChanged(const std::string& name, uint32_t value) = 0; 116 virtual void EmitIntChanged(const std::string& name, int value) = 0; 117 virtual void EmitStringChanged(const std::string& name, 118 const std::string& value) = 0; 119}; 120 121// These are the functions that a RPCTask adaptor must support. 122class RPCTaskAdaptorInterface { 123 public: 124 virtual ~RPCTaskAdaptorInterface() {} 125 126 // Getter for the opaque identifier that represents this object on the 127 // RPC interface to which the implementation is adapting. 128 virtual const std::string& GetRpcIdentifier() = 0; 129 130 // Getter for the opaque identifier that represents this object's 131 // connection to the RPC interface to which the implementation is adapting. 132 virtual const std::string& GetRpcConnectionIdentifier() = 0; 133}; 134 135// These are the functions that a Service adaptor must support 136class ServiceAdaptorInterface { 137 public: 138 virtual ~ServiceAdaptorInterface() {} 139 140 // Getter for the opaque identifier that represents this object on the 141 // RPC interface to which the implementation is adapting. 142 virtual const std::string& GetRpcIdentifier() = 0; 143 144 virtual void EmitBoolChanged(const std::string& name, bool value) = 0; 145 virtual void EmitUint8Changed(const std::string& name, uint8_t value) = 0; 146 virtual void EmitUint16Changed(const std::string& name, uint16_t value) = 0; 147 virtual void EmitUint16sChanged(const std::string& name, 148 const Uint16s& value) = 0; 149 virtual void EmitUintChanged(const std::string& name, uint32_t value) = 0; 150 virtual void EmitIntChanged(const std::string& name, int value) = 0; 151 virtual void EmitRpcIdentifierChanged(const std::string& name, 152 const std::string& value) = 0; 153 virtual void EmitStringChanged(const std::string& name, 154 const std::string& value) = 0; 155 virtual void EmitStringmapChanged(const std::string& name, 156 const Stringmap& value) = 0; 157}; 158 159class ThirdPartyVpnAdaptorInterface { 160 public: 161 virtual ~ThirdPartyVpnAdaptorInterface() {} 162 163 virtual void EmitPacketReceived(const std::vector<uint8_t>& packet) = 0; 164 165 virtual void EmitPlatformMessage(uint32_t message) = 0; 166}; 167 168} // namespace shill 169 170#endif // SHILL_ADAPTOR_INTERFACES_H_ 171