| Index: src/platform/update_engine/update_attempter.h
|
| diff --git a/src/platform/update_engine/update_attempter.h b/src/platform/update_engine/update_attempter.h
|
| index 83e47376e5363d0a2ee75e3b995eb76f11abb273..76fe3fb4a4ddd6c7a13bfea41ebfc28151af766e 100644
|
| --- a/src/platform/update_engine/update_attempter.h
|
| +++ b/src/platform/update_engine/update_attempter.h
|
| @@ -5,24 +5,52 @@
|
| #ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__
|
| #define CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__
|
|
|
| +#include <time.h>
|
| #include <tr1/memory>
|
| #include <string>
|
| #include <vector>
|
| #include <glib.h>
|
| #include "update_engine/action_processor.h"
|
| +#include "update_engine/download_action.h"
|
| #include "update_engine/omaha_response_handler_action.h"
|
|
|
| +struct UpdateEngineService;
|
| +
|
| namespace chromeos_update_engine {
|
|
|
| -class UpdateAttempter : public ActionProcessorDelegate {
|
| +enum UpdateStatus {
|
| + UPDATE_STATUS_IDLE = 0,
|
| + UPDATE_STATUS_CHECKING_FOR_UPDATE,
|
| + UPDATE_STATUS_UPDATE_AVAILABLE,
|
| + UPDATE_STATUS_DOWNLOADING,
|
| + UPDATE_STATUS_VERIFYING,
|
| + UPDATE_STATUS_FINALIZING,
|
| + UPDATE_STATUS_UPDATED_NEED_REBOOT
|
| +};
|
| +
|
| +const char* UpdateStatusToString(UpdateStatus status);
|
| +
|
| +class UpdateAttempter : public ActionProcessorDelegate,
|
| + public DownloadActionDelegate {
|
| public:
|
| - explicit UpdateAttempter(GMainLoop *loop)
|
| - : full_update_(false),
|
| - loop_(loop) {}
|
| + UpdateAttempter() : full_update_(false),
|
| + dbus_service_(NULL),
|
| + status_(UPDATE_STATUS_IDLE),
|
| + download_progress_(0.0),
|
| + last_checked_time_(0),
|
| + new_version_("0.0.0.0"),
|
| + new_size_(0) {
|
| + last_notify_time_.tv_sec = 0;
|
| + last_notify_time_.tv_nsec = 0;
|
| + }
|
| void Update(bool force_full_update);
|
|
|
| - // Delegate method:
|
| + // ActionProcessorDelegate methods:
|
| void ProcessingDone(const ActionProcessor* processor, bool success);
|
| + void ProcessingStopped(const ActionProcessor* processor);
|
| + void ActionCompleted(ActionProcessor* processor,
|
| + AbstractAction* action,
|
| + bool success);
|
|
|
| // Stop updating. An attempt will be made to record status to the disk
|
| // so that updates can be resumed later.
|
| @@ -38,14 +66,40 @@ class UpdateAttempter : public ActionProcessorDelegate {
|
| std::string* new_version,
|
| int64_t* new_size);
|
|
|
| + void set_dbus_service(struct UpdateEngineService* dbus_service) {
|
| + dbus_service_ = dbus_service;
|
| + }
|
| +
|
| + void CheckForUpdate();
|
| +
|
| + // DownloadActionDelegate method
|
| + void BytesReceived(uint64_t bytes_received, uint64_t total);
|
| +
|
| private:
|
| + // Sets the status to the given status and notifies a status update
|
| + // over dbus.
|
| + void SetStatusAndNotify(UpdateStatus status);
|
| +
|
| + struct timespec last_notify_time_;
|
| +
|
| bool full_update_;
|
| std::vector<std::tr1::shared_ptr<AbstractAction> > actions_;
|
| ActionProcessor processor_;
|
| - GMainLoop *loop_;
|
| +
|
| + // If non-null, this UpdateAttempter will send status updates over this
|
| + // dbus service.
|
| + UpdateEngineService* dbus_service_;
|
|
|
| // pointer to the OmahaResponseHandlerAction in the actions_ vector;
|
| std::tr1::shared_ptr<OmahaResponseHandlerAction> response_handler_action_;
|
| +
|
| + // For status:
|
| + UpdateStatus status_;
|
| + double download_progress_;
|
| + int64_t last_checked_time_;
|
| + std::string new_version_;
|
| + int64_t new_size_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(UpdateAttempter);
|
| };
|
|
|
|
|