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