blob: 8977ee038394fabca64c04966edb63f584e34559 [file] [log] [blame]
Darin Petkov096b3472012-05-15 10:26:22 +02001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef SHILL_WIMAX_DEVICE_PROXY_H_
6#define SHILL_WIMAX_DEVICE_PROXY_H_
7
8#include <base/callback.h>
9
10#include "shill/dbus_bindings/wimax_manager-device.h"
11#include "shill/wimax_device_proxy_interface.h"
12
13namespace shill {
14
15class WiMaxDeviceProxy : public WiMaxDeviceProxyInterface {
16 public:
17 // Constructs a WiMaxManager.Device DBus object proxy at |path|.
18 WiMaxDeviceProxy(DBus::Connection *connection,
19 const DBus::Path &path);
20 virtual ~WiMaxDeviceProxy();
21
22 // Inherited from WiMaxDeviceProxyInterface.
23 virtual void Enable(Error *error,
24 const ResultCallback &callback,
25 int timeout);
26 virtual void Disable(Error *error,
27 const ResultCallback &callback,
28 int timeout);
Darin Petkov9893d9c2012-05-17 15:27:31 -070029 virtual void ScanNetworks(Error *error,
30 const ResultCallback &callback,
31 int timeout);
Darin Petkov096b3472012-05-15 10:26:22 +020032 virtual void Connect(Error *error,
33 const ResultCallback &callback,
34 int timeout);
35 virtual void Disconnect(Error *error,
36 const ResultCallback &callback,
37 int timeout);
Darin Petkov9893d9c2012-05-17 15:27:31 -070038 virtual void set_networks_changed_callback(
39 const NetworksChangedCallback &callback);
Darin Petkov096b3472012-05-15 10:26:22 +020040 virtual uint8 Index(Error *error);
41 virtual std::string Name(Error *error);
42
43 private:
44 class Proxy : public org::chromium::WiMaxManager::Device_proxy,
45 public DBus::ObjectProxy {
46 public:
Darin Petkov9893d9c2012-05-17 15:27:31 -070047 Proxy(DBus::Connection *connection, const DBus::Path &path);
Darin Petkov096b3472012-05-15 10:26:22 +020048 virtual ~Proxy();
49
Darin Petkov9893d9c2012-05-17 15:27:31 -070050 void set_networks_changed_callback(const NetworksChangedCallback &callback);
51
Darin Petkov096b3472012-05-15 10:26:22 +020052 private:
53 // Signal callbacks inherited from WiMaxManager::Device_proxy.
Darin Petkov9893d9c2012-05-17 15:27:31 -070054 virtual void NetworksChanged(const std::vector<DBus::Path> &networks);
Darin Petkov096b3472012-05-15 10:26:22 +020055
56 // Method callbacks inherited from WiMaxManager::Device_proxy.
57 virtual void EnableCallback(const DBus::Error &error, void *data);
58 virtual void DisableCallback(const DBus::Error &error, void *data);
Darin Petkov9893d9c2012-05-17 15:27:31 -070059 virtual void ScanNetworksCallback(const DBus::Error &error, void *data);
Darin Petkov096b3472012-05-15 10:26:22 +020060 virtual void ConnectCallback(const DBus::Error &error, void *data);
61 virtual void DisconnectCallback(const DBus::Error &error, void *data);
62
63 static void HandleCallback(const DBus::Error &error, void *data);
64
Darin Petkov9893d9c2012-05-17 15:27:31 -070065 NetworksChangedCallback networks_changed_callback_;
66
Darin Petkov096b3472012-05-15 10:26:22 +020067 DISALLOW_COPY_AND_ASSIGN(Proxy);
68 };
69
70 void Invoke(const base::Callback<void(void *, int)> &method,
71 Error *error,
72 const ResultCallback &callback,
73 int timeout);
74
75 static void FromDBusError(const DBus::Error &dbus_error, Error *error);
76
77 Proxy proxy_;
78
79 DISALLOW_COPY_AND_ASSIGN(WiMaxDeviceProxy);
80};
81
82} // namespace shill
83
84#endif // SHILL_WIMAX_DEVICE_PROXY_H_