blob: 4b8a1fda7cee49dd2b6faea031a8a3e90a4e70d8 [file] [log] [blame]
Peter Qiu5dd242d2014-10-14 12:23:21 -07001// Copyright 2014 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 APMANAGER_MANAGER_H_
6#define APMANAGER_MANAGER_H_
7
Peter Qiufb39ba42014-11-21 09:09:59 -08008#include <string>
Peter Qiu376e4042014-11-13 09:40:28 -08009#include <vector>
10
Peter Qiu5dd242d2014-10-14 12:23:21 -070011#include <base/macros.h>
12#include <base/memory/scoped_ptr.h>
13
14#include "apmanager/dbus_adaptors/org.chromium.apmanager.Manager.h"
15
Peter Qiufb39ba42014-11-21 09:09:59 -080016#include "apmanager/device_info.h"
Peter Qiu376e4042014-11-13 09:40:28 -080017#include "apmanager/service.h"
Peter Qiu5dd242d2014-10-14 12:23:21 -070018
19namespace apmanager {
20
Peter Qiuf0731732014-11-11 09:46:41 -080021class Manager : public org::chromium::apmanager::ManagerAdaptor,
22 public org::chromium::apmanager::ManagerInterface {
Peter Qiu5dd242d2014-10-14 12:23:21 -070023 public:
24 Manager();
25 virtual ~Manager();
26
Peter Qiuf0731732014-11-11 09:46:41 -080027 // Implementation of ManagerInterface.
Peter Qiu376e4042014-11-13 09:40:28 -080028 // Handles calls to org.chromium.apmanager.Manager.CreateService().
29 // This is an asynchronous call, response is invoked when Service and Config
30 // dbus objects complete the DBus service registration.
31 virtual void CreateService(
32 scoped_ptr<chromeos::dbus_utils::DBusMethodResponse<dbus::ObjectPath>>
33 response);
34 // Handles calls to org.chromium.apmanager.Manager.RemoveService().
Peter Qiuf0731732014-11-11 09:46:41 -080035 virtual bool RemoveService(chromeos::ErrorPtr* error,
36 const dbus::ObjectPath& in_service);
Peter Qiu5dd242d2014-10-14 12:23:21 -070037
Peter Qiufb39ba42014-11-21 09:09:59 -080038 // Register DBus object.
39 void RegisterAsync(
40 chromeos::dbus_utils::ExportedObjectManager* object_manager,
41 chromeos::dbus_utils::AsyncEventSequencer* sequencer);
42
43 virtual void Start();
44 virtual void Stop();
45
46 virtual void RegisterDevice(scoped_refptr<Device> device);
47
Peter Qiu8e785b92014-11-24 10:01:08 -080048 // Return an unuse device with AP interface mode support.
Peter Qiufb39ba42014-11-21 09:09:59 -080049 virtual scoped_refptr<Device> GetAvailableDevice();
Peter Qiu8e785b92014-11-24 10:01:08 -080050
51 // Return the device that's associated with the given interface
52 // |interface_name|.
Peter Qiufb39ba42014-11-21 09:09:59 -080053 virtual scoped_refptr<Device> GetDeviceFromInterfaceName(
54 const std::string& interface_name);
55
Peter Qiu5dd242d2014-10-14 12:23:21 -070056 private:
57 friend class ManagerTest;
58
Peter Qiu376e4042014-11-13 09:40:28 -080059 // A callback that will be called when the Service/Config D-Bus
60 // objects/interfaces are exported successfully and ready to be used.
Peter Qiu1ff67a72014-11-22 07:06:10 -080061 void OnServiceRegistered(
Peter Qiu376e4042014-11-13 09:40:28 -080062 scoped_ptr<chromeos::dbus_utils::DBusMethodResponse<dbus::ObjectPath>>
63 response,
64 scoped_ptr<Service> service,
65 bool success);
Peter Qiu5dd242d2014-10-14 12:23:21 -070066
Peter Qiufb39ba42014-11-21 09:09:59 -080067 // A callback that will be called when a Device D-Bus object/interface is
68 // exported successfully and ready to be used.
Peter Qiu1ff67a72014-11-22 07:06:10 -080069 void OnDeviceRegistered(scoped_refptr<Device> device, bool success);
Peter Qiufb39ba42014-11-21 09:09:59 -080070
Peter Qiu376e4042014-11-13 09:40:28 -080071 int service_identifier_;
Peter Qiufb39ba42014-11-21 09:09:59 -080072 int device_identifier_;
Peter Qiu376e4042014-11-13 09:40:28 -080073 std::unique_ptr<chromeos::dbus_utils::DBusObject> dbus_object_;
74 std::vector<std::unique_ptr<Service>> services_;
Peter Qiufb39ba42014-11-21 09:09:59 -080075 std::vector<scoped_refptr<Device>> devices_;
76 DeviceInfo device_info_;
77
Peter Qiu5dd242d2014-10-14 12:23:21 -070078 DISALLOW_COPY_AND_ASSIGN(Manager);
79};
80
81} // namespace apmanager
82
83#endif // APMANAGER_MANAGER_H_