blob: 6790d547731bdb017e6f120ebd26d4f9096e832f [file] [log] [blame]
Alex Deymof7ead812015-10-23 17:37:27 -07001//
2// Copyright (C) 2015 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 UPDATE_ENGINE_WEAVE_SERVICE_H_
18#define UPDATE_ENGINE_WEAVE_SERVICE_H_
19
20#include <memory>
21
22#include <dbus/bus.h>
23#include <libweaved/command.h>
24#include <libweaved/device.h>
25
26#include "update_engine/weave_service_interface.h"
27
28namespace chromeos_update_engine {
29
30class WeaveService : public WeaveServiceInterface {
31 public:
32 WeaveService() = default;
33 ~WeaveService() override = default;
34
35 bool Init(scoped_refptr<dbus::Bus> bus, DelegateInterface* delegate);
36
37 // WeaveServiceInterface override.
38 void UpdateWeaveState() override;
39
40 private:
41 // Weave command handlers. These are called from the message loop whenever a
42 // command is received and dispatch the synchronous call to the |delegate_|.
43 void OnCheckForUpdates(const std::weak_ptr<weaved::Command>& cmd);
44 void OnTrackChannel(const std::weak_ptr<weaved::Command>& cmd);
45
46 WeaveServiceInterface::DelegateInterface* delegate_{nullptr};
47
48 std::unique_ptr<weaved::Device> device_;
49};
50
51} // namespace chromeos_update_engine
52
53#endif // UPDATE_ENGINE_WEAVE_SERVICE_H_