1c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 2c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Copyright (C) 2012 The Android Open Source Project 3c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 4c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Licensed under the Apache License, Version 2.0 (the "License"); 5c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// you may not use this file except in compliance with the License. 6c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// You may obtain a copy of the License at 7c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 8c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// http://www.apache.org/licenses/LICENSE-2.0 9c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 10c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Unless required by applicable law or agreed to in writing, software 11c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// distributed under the License is distributed on an "AS IS" BASIS, 12c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// See the License for the specific language governing permissions and 14c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// limitations under the License. 15c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// 16d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone 17c45688bb3881f0c2216e6ec0e19ebda0be33e871Ben Chan#ifndef SHILL_ADAPTOR_INTERFACES_H_ 18c45688bb3881f0c2216e6ec0e19ebda0be33e871Ben Chan#define SHILL_ADAPTOR_INTERFACES_H_ 19d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone 20d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone#include <string> 213239932e4a0a92fec52d88860081cbbb003eabb0mukesh agrawal#include <vector> 22d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone 23c00d1fa87127a33bd1e1a7cf049a54a9cca49d68Peter Qiu#include <base/callback.h> 243cfbf216f1f918384866bf0d1a4c9a447d8109e8Darin Petkov 25c00d1fa87127a33bd1e1a7cf049a54a9cca49d68Peter Qiu#include "shill/accessor_interface.h" 2669b6a95f893d2b21d66ca66a068ae9b1f3cd5470Peter Qiu 27d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masonenamespace shill { 28d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone 29e5bc2cbc1c9717564d4ab75c42a26492b505f537Darin Petkovclass Error; 30e5bc2cbc1c9717564d4ab75c42a26492b505f537Darin Petkov 314e85161f12699d8eb2116ae24766676ed8227a71Chris Masone// These are the functions that a Device adaptor must support 324e85161f12699d8eb2116ae24766676ed8227a71Chris Masoneclass DeviceAdaptorInterface { 33d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone public: 344e85161f12699d8eb2116ae24766676ed8227a71Chris Masone virtual ~DeviceAdaptorInterface() {} 3595207da4b896bd0a4186163f6f9ebda044a5a7b9Chris Masone 3695207da4b896bd0a4186163f6f9ebda044a5a7b9Chris Masone // Getter for the opaque identifier that represents this object on the 3795207da4b896bd0a4186163f6f9ebda044a5a7b9Chris Masone // RPC interface to which the implementation is adapting. 38a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual const std::string& GetRpcIdentifier() = 0; 3995207da4b896bd0a4186163f6f9ebda044a5a7b9Chris Masone 40a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitBoolChanged(const std::string& name, bool value) = 0; 41a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitUintChanged(const std::string& name, uint32_t value) = 0; 42a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitUint16Changed(const std::string& name, uint16_t value) = 0; 43a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitIntChanged(const std::string& name, int value) = 0; 44a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitStringChanged(const std::string& name, 45a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::string& value) = 0; 46a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitStringmapChanged(const std::string& name, 47a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const Stringmap& value) = 0; 48a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitStringmapsChanged(const std::string& name, 49a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const Stringmaps& value) = 0; 50a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitStringsChanged(const std::string& name, 51a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const Strings& value) = 0; 52a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitKeyValueStoreChanged(const std::string& name, 53a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const KeyValueStore& value) = 0; 54a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitRpcIdentifierChanged(const std::string& name, 55a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::string& value) = 0; 56d4f26486b237fae831d4b682481de785fc99c66ePaul Stewart virtual void EmitRpcIdentifierArrayChanged( 57a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::string& name, const std::vector<std::string>& value) = 0; 58d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone}; 59d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone 604e85161f12699d8eb2116ae24766676ed8227a71Chris Masone// These are the functions that an IPConfig adaptor must support 614e85161f12699d8eb2116ae24766676ed8227a71Chris Masoneclass IPConfigAdaptorInterface { 62d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone public: 634e85161f12699d8eb2116ae24766676ed8227a71Chris Masone virtual ~IPConfigAdaptorInterface() {} 6495207da4b896bd0a4186163f6f9ebda044a5a7b9Chris Masone 6595207da4b896bd0a4186163f6f9ebda044a5a7b9Chris Masone // Getter for the opaque identifier that represents this object on the 6695207da4b896bd0a4186163f6f9ebda044a5a7b9Chris Masone // RPC interface to which the implementation is adapting. 67a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual const std::string& GetRpcIdentifier() = 0; 68a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart 69a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitBoolChanged(const std::string& name, bool value) = 0; 70a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitUintChanged(const std::string& name, uint32_t value) = 0; 71a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitIntChanged(const std::string& name, int value) = 0; 72a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitStringChanged(const std::string& name, 73a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::string& value) = 0; 74a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitStringsChanged(const std::string& name, 75a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::vector<std::string>& value) = 0; 76d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone}; 77d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone 784e85161f12699d8eb2116ae24766676ed8227a71Chris Masone// These are the functions that a Manager adaptor must support 794e85161f12699d8eb2116ae24766676ed8227a71Chris Masoneclass ManagerAdaptorInterface { 80d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone public: 814e85161f12699d8eb2116ae24766676ed8227a71Chris Masone virtual ~ManagerAdaptorInterface() {} 82d0ceb8c66779819ab12b8abb488aed22b7d04fd3Chris Masone 8369b6a95f893d2b21d66ca66a068ae9b1f3cd5470Peter Qiu virtual void RegisterAsync( 84c00d1fa87127a33bd1e1a7cf049a54a9cca49d68Peter Qiu const base::Callback<void(bool)>& completion_callback) = 0; 8569b6a95f893d2b21d66ca66a068ae9b1f3cd5470Peter Qiu 8695207da4b896bd0a4186163f6f9ebda044a5a7b9Chris Masone // Getter for the opaque identifier that represents this object on the 8795207da4b896bd0a4186163f6f9ebda044a5a7b9Chris Masone // RPC interface to which the implementation is adapting. 88a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual const std::string& GetRpcIdentifier() = 0; 8995207da4b896bd0a4186163f6f9ebda044a5a7b9Chris Masone 90a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitBoolChanged(const std::string& name, bool value) = 0; 91a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitUintChanged(const std::string& name, uint32_t value) = 0; 92a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitIntChanged(const std::string& name, int value) = 0; 93a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitStringChanged(const std::string& name, 94a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::string& value) = 0; 95a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitStringsChanged(const std::string& name, 96a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::vector<std::string>& value) = 0; 9749739c08a76187fae6494c61e960eec315960715Paul Stewart virtual void EmitRpcIdentifierChanged( 98a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::string& name, 99a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::string& value) = 0; 1003239932e4a0a92fec52d88860081cbbb003eabb0mukesh agrawal virtual void EmitRpcIdentifierArrayChanged( 101a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::string& name, 102a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::vector<std::string>& value) = 0; 103d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone}; 104d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone 10552cd19bfd52226611d924930f1178307f79d5fdcChris Masone// These are the functions that a Profile adaptor must support 10652cd19bfd52226611d924930f1178307f79d5fdcChris Masoneclass ProfileAdaptorInterface { 10752cd19bfd52226611d924930f1178307f79d5fdcChris Masone public: 10852cd19bfd52226611d924930f1178307f79d5fdcChris Masone virtual ~ProfileAdaptorInterface() {} 10952cd19bfd52226611d924930f1178307f79d5fdcChris Masone 110c6c6c13e2543bd3ff5beae067b0320647fe1e141Chris Masone // Getter for the opaque identifier that represents this object on the 111c6c6c13e2543bd3ff5beae067b0320647fe1e141Chris Masone // RPC interface to which the implementation is adapting. 112a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual const std::string& GetRpcIdentifier() = 0; 113c6c6c13e2543bd3ff5beae067b0320647fe1e141Chris Masone 114a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitBoolChanged(const std::string& name, bool value) = 0; 115a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitUintChanged(const std::string& name, uint32_t value) = 0; 116a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitIntChanged(const std::string& name, int value) = 0; 117a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitStringChanged(const std::string& name, 118a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::string& value) = 0; 119c6c6c13e2543bd3ff5beae067b0320647fe1e141Chris Masone}; 120c6c6c13e2543bd3ff5beae067b0320647fe1e141Chris Masone 121a9b1fedcad9d354ff7b0a6a7e4cfd58fa7133084Darin Petkov// These are the functions that a RPCTask adaptor must support. 122a9b1fedcad9d354ff7b0a6a7e4cfd58fa7133084Darin Petkovclass RPCTaskAdaptorInterface { 123a9b1fedcad9d354ff7b0a6a7e4cfd58fa7133084Darin Petkov public: 124a9b1fedcad9d354ff7b0a6a7e4cfd58fa7133084Darin Petkov virtual ~RPCTaskAdaptorInterface() {} 125a9b1fedcad9d354ff7b0a6a7e4cfd58fa7133084Darin Petkov 126a9b1fedcad9d354ff7b0a6a7e4cfd58fa7133084Darin Petkov // Getter for the opaque identifier that represents this object on the 127a9b1fedcad9d354ff7b0a6a7e4cfd58fa7133084Darin Petkov // RPC interface to which the implementation is adapting. 128a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual const std::string& GetRpcIdentifier() = 0; 129a9b1fedcad9d354ff7b0a6a7e4cfd58fa7133084Darin Petkov 130a9b1fedcad9d354ff7b0a6a7e4cfd58fa7133084Darin Petkov // Getter for the opaque identifier that represents this object's 131a9b1fedcad9d354ff7b0a6a7e4cfd58fa7133084Darin Petkov // connection to the RPC interface to which the implementation is adapting. 132a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual const std::string& GetRpcConnectionIdentifier() = 0; 133a9b1fedcad9d354ff7b0a6a7e4cfd58fa7133084Darin Petkov}; 134a9b1fedcad9d354ff7b0a6a7e4cfd58fa7133084Darin Petkov 1354e85161f12699d8eb2116ae24766676ed8227a71Chris Masone// These are the functions that a Service adaptor must support 1364e85161f12699d8eb2116ae24766676ed8227a71Chris Masoneclass ServiceAdaptorInterface { 137c6c6c13e2543bd3ff5beae067b0320647fe1e141Chris Masone public: 1384e85161f12699d8eb2116ae24766676ed8227a71Chris Masone virtual ~ServiceAdaptorInterface() {} 139c6c6c13e2543bd3ff5beae067b0320647fe1e141Chris Masone 140c6c6c13e2543bd3ff5beae067b0320647fe1e141Chris Masone // Getter for the opaque identifier that represents this object on the 141c6c6c13e2543bd3ff5beae067b0320647fe1e141Chris Masone // RPC interface to which the implementation is adapting. 142a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual const std::string& GetRpcIdentifier() = 0; 143c6c6c13e2543bd3ff5beae067b0320647fe1e141Chris Masone 144a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitBoolChanged(const std::string& name, bool value) = 0; 145a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitUint8Changed(const std::string& name, uint8_t value) = 0; 146a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitUint16Changed(const std::string& name, uint16_t value) = 0; 147a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitUint16sChanged(const std::string& name, 148a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const Uint16s& value) = 0; 149a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitUintChanged(const std::string& name, uint32_t value) = 0; 150a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitIntChanged(const std::string& name, int value) = 0; 151a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitRpcIdentifierChanged(const std::string& name, 152a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::string& value) = 0; 153a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitStringChanged(const std::string& name, 154a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const std::string& value) = 0; 155a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitStringmapChanged(const std::string& name, 156a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart const Stringmap& value) = 0; 15752cd19bfd52226611d924930f1178307f79d5fdcChris Masone}; 15852cd19bfd52226611d924930f1178307f79d5fdcChris Masone 159127b341755731bd6ecc19e44b63c23c79e0b7cd1Prabhu Kaliamoorthiclass ThirdPartyVpnAdaptorInterface { 160127b341755731bd6ecc19e44b63c23c79e0b7cd1Prabhu Kaliamoorthi public: 161c00d1fa87127a33bd1e1a7cf049a54a9cca49d68Peter Qiu virtual ~ThirdPartyVpnAdaptorInterface() {} 162127b341755731bd6ecc19e44b63c23c79e0b7cd1Prabhu Kaliamoorthi 163a794cd60a7339d576ea2eed263a4f0a20fb255afPaul Stewart virtual void EmitPacketReceived(const std::vector<uint8_t>& packet) = 0; 164127b341755731bd6ecc19e44b63c23c79e0b7cd1Prabhu Kaliamoorthi 165127b341755731bd6ecc19e44b63c23c79e0b7cd1Prabhu Kaliamoorthi virtual void EmitPlatformMessage(uint32_t message) = 0; 166127b341755731bd6ecc19e44b63c23c79e0b7cd1Prabhu Kaliamoorthi}; 167127b341755731bd6ecc19e44b63c23c79e0b7cd1Prabhu Kaliamoorthi 168d7732e4b308836ed21723c1ab412f640f02abdf1Chris Masone} // namespace shill 169c45688bb3881f0c2216e6ec0e19ebda0be33e871Ben Chan 170c45688bb3881f0c2216e6ec0e19ebda0be33e871Ben Chan#endif // SHILL_ADAPTOR_INTERFACES_H_ 171