1// 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#include <string> 22 23#include <base/memory/weak_ptr.h> 24#include <libweaved/command.h> 25#include <libweaved/service.h> 26 27#include "update_engine/weave_service_interface.h" 28 29namespace chromeos_update_engine { 30 31class WeaveService : public WeaveServiceInterface { 32 public: 33 WeaveService() = default; 34 ~WeaveService() override = default; 35 36 bool Init(DelegateInterface* delegate); 37 38 // ServiceObserverInterface overrides. 39 void SendStatusUpdate(int64_t last_checked_time, 40 double progress, 41 update_engine::UpdateStatus status, 42 const std::string& new_version, 43 int64_t new_size) override; 44 void SendChannelChangeUpdate(const std::string& tracking_channel) override; 45 void SendPayloadApplicationComplete(ErrorCode error_code) override {} 46 47 private: 48 // Force a weave update. 49 void UpdateWeaveState(); 50 51 void OnWeaveServiceConnected(const std::weak_ptr<weaved::Service>& service); 52 53 // Weave command handlers. These are called from the message loop whenever a 54 // command is received and dispatch the synchronous call to the |delegate_|. 55 void OnCheckForUpdates(std::unique_ptr<weaved::Command> cmd); 56 void OnTrackChannel(std::unique_ptr<weaved::Command> cmd); 57 58 WeaveServiceInterface::DelegateInterface* delegate_{nullptr}; 59 60 std::unique_ptr<weaved::Service::Subscription> weave_service_subscription_; 61 std::weak_ptr<weaved::Service> weave_service_; 62}; 63 64} // namespace chromeos_update_engine 65 66#endif // UPDATE_ENGINE_WEAVE_SERVICE_H_ 67