197c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin//
297c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin// Copyright (C) 2012 The Android Open Source Project
397c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin//
497c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin// Licensed under the Apache License, Version 2.0 (the "License");
597c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin// you may not use this file except in compliance with the License.
697c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin// You may obtain a copy of the License at
797c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin//
897c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin//      http://www.apache.org/licenses/LICENSE-2.0
997c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin//
1097c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin// Unless required by applicable law or agreed to in writing, software
1197c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin// distributed under the License is distributed on an "AS IS" BASIS,
1297c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1397c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin// See the License for the specific language governing permissions and
1497c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin// limitations under the License.
1597c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin//
1697c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin
1797c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin#ifndef UPDATE_ENGINE_CLIENT_LIBRARY_INCLUDE_STATUS_UPDATE_HANDLER_H_
1897c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin#define UPDATE_ENGINE_CLIENT_LIBRARY_INCLUDE_STATUS_UPDATE_HANDLER_H_
1997c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin
2097c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin#include <string>
2197c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin
2297c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin#include "update_engine/client.h"
2397c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin#include "update_engine/update_status.h"
2497c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin
2597c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlinnamespace update_engine {
2697c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin
2797c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin// Handles update_engine status changes. An instance of this class can be
2897c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin// registered with UpdateEngineClient and will respond to any update_engine
2997c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin// status changes.
3097c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlinclass StatusUpdateHandler {
3197c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin public:
3297c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin  virtual ~StatusUpdateHandler() = default;
3397c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin
3497c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin  // Runs when we fail to register the handler due to an IPC error.
3597c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin  virtual void IPCError(const std::string& error) = 0;
3697c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin
3797c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin  // Runs every time update_engine reports a status change.
3897c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin  virtual void HandleStatusUpdate(int64_t last_checked_time,
3997c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin                                  double progress,
4097c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin                                  UpdateStatus current_operation,
4197c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin                                  const std::string& new_version,
4297c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin                                  int64_t new_size) = 0;
4397c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin};
4497c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin
4597c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin}  // namespace update_engine
4697c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin
4797c870518ce1149b32966d98ebfe93f3eb5d1fefCasey Dahlin#endif  // UPDATE_ENGINE_CLIENT_LIBRARY_INCLUDE_STATUS_UPDATE_HANDLER_H_
48