blob: 9c9bcb0923775f3ed37c12f442f67a55c21fb169 [file] [log] [blame]
Vitaly Buka72410b22015-05-13 13:48:59 -07001// Copyright 2015 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 BUFFET_BASE_API_HANDLER_H_
6#define BUFFET_BASE_API_HANDLER_H_
7
8#include <memory>
9#include <string>
10
11#include <base/memory/weak_ptr.h>
12
13namespace buffet {
14
15class CommandInstance;
16class CommandManager;
17class DeviceRegistrationInfo;
Vitaly Buka2f7efdb2015-05-27 16:00:21 -070018class StateManager;
Vitaly Buka72410b22015-05-13 13:48:59 -070019
20// Handles commands from 'base' package.
21// Objects of the class subscribe for notification from CommandManager and
22// execute incoming commands.
23// Handled commands:
24// base.updateDeviceInfo
Vitaly Buka2f7efdb2015-05-27 16:00:21 -070025// base.updateBaseConfiguration
Vitaly Buka72410b22015-05-13 13:48:59 -070026class BaseApiHandler final {
27 public:
28 BaseApiHandler(const base::WeakPtr<DeviceRegistrationInfo>& device_info,
Vitaly Buka2f7efdb2015-05-27 16:00:21 -070029 const std::shared_ptr<StateManager>& state_manager,
Vitaly Buka72410b22015-05-13 13:48:59 -070030 const std::shared_ptr<CommandManager>& command_manager);
31
32 private:
33 void OnCommandAdded(CommandInstance* command);
Vitaly Buka2f7efdb2015-05-27 16:00:21 -070034 void UpdateBaseConfiguration(CommandInstance* command);
Vitaly Buka72410b22015-05-13 13:48:59 -070035 void UpdateDeviceInfo(CommandInstance* command);
36
37 base::WeakPtr<DeviceRegistrationInfo> device_info_;
Vitaly Buka2f7efdb2015-05-27 16:00:21 -070038 std::shared_ptr<StateManager> state_manager_;
Vitaly Buka72410b22015-05-13 13:48:59 -070039
40 base::WeakPtrFactory<BaseApiHandler> weak_ptr_factory_{this};
41 DISALLOW_COPY_AND_ASSIGN(BaseApiHandler);
42};
43
44} // namespace buffet
45
46#endif // BUFFET_BASE_API_HANDLER_H_