Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(160)

Side by Side Diff: update_attempter.h

Issue 3042007: AU: A basic framework for sending error events when update attempt fails. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/update_engine.git
Patch Set: Change ERROR_EVENT to REPORTING_ERROR_EVENT status. Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | update_attempter.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__ 5 #ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__
6 #define CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__ 6 #define CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__
7 7
8 #include <time.h> 8 #include <time.h>
9 #include <tr1/memory> 9 #include <tr1/memory>
10 #include <string> 10 #include <string>
(...skipping 11 matching lines...) Expand all
22 22
23 extern const char* kUpdateCompletedMarker; 23 extern const char* kUpdateCompletedMarker;
24 24
25 enum UpdateStatus { 25 enum UpdateStatus {
26 UPDATE_STATUS_IDLE = 0, 26 UPDATE_STATUS_IDLE = 0,
27 UPDATE_STATUS_CHECKING_FOR_UPDATE, 27 UPDATE_STATUS_CHECKING_FOR_UPDATE,
28 UPDATE_STATUS_UPDATE_AVAILABLE, 28 UPDATE_STATUS_UPDATE_AVAILABLE,
29 UPDATE_STATUS_DOWNLOADING, 29 UPDATE_STATUS_DOWNLOADING,
30 UPDATE_STATUS_VERIFYING, 30 UPDATE_STATUS_VERIFYING,
31 UPDATE_STATUS_FINALIZING, 31 UPDATE_STATUS_FINALIZING,
32 UPDATE_STATUS_UPDATED_NEED_REBOOT 32 UPDATE_STATUS_UPDATED_NEED_REBOOT,
33 UPDATE_STATUS_REPORTING_ERROR_EVENT,
33 }; 34 };
34 35
35 const char* UpdateStatusToString(UpdateStatus status); 36 const char* UpdateStatusToString(UpdateStatus status);
36 37
37 class UpdateAttempter : public ActionProcessorDelegate, 38 class UpdateAttempter : public ActionProcessorDelegate,
38 public DownloadActionDelegate { 39 public DownloadActionDelegate {
39 public: 40 public:
40 UpdateAttempter(MetricsLibraryInterface* metrics_lib) 41 UpdateAttempter(MetricsLibraryInterface* metrics_lib)
41 : dbus_service_(NULL), 42 : dbus_service_(NULL),
42 metrics_lib_(metrics_lib), 43 metrics_lib_(metrics_lib),
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 void CheckForUpdate(); 81 void CheckForUpdate();
81 82
82 // DownloadActionDelegate method 83 // DownloadActionDelegate method
83 void BytesReceived(uint64_t bytes_received, uint64_t total); 84 void BytesReceived(uint64_t bytes_received, uint64_t total);
84 85
85 private: 86 private:
86 // Sets the status to the given status and notifies a status update 87 // Sets the status to the given status and notifies a status update
87 // over dbus. 88 // over dbus.
88 void SetStatusAndNotify(UpdateStatus status); 89 void SetStatusAndNotify(UpdateStatus status);
89 90
91 // Creates an error event object in |error_event_| to be included in
92 // an OmahaRequestAction once the current action processor is done.
93 void CreatePendingErrorEvent(ActionExitCode code);
94
95 // If there's a pending error event allocated in |error_event_|,
96 // schedules an OmahaRequestAction with that event in the current
97 // processor, clears the pending event, updates the status and
98 // returns true. Returns false otherwise.
99 bool ScheduleErrorEventAction();
100
90 struct timespec last_notify_time_; 101 struct timespec last_notify_time_;
91 102
92 std::vector<std::tr1::shared_ptr<AbstractAction> > actions_; 103 std::vector<std::tr1::shared_ptr<AbstractAction> > actions_;
93 ActionProcessor processor_; 104 ActionProcessor processor_;
94 105
95 // If non-null, this UpdateAttempter will send status updates over this 106 // If non-null, this UpdateAttempter will send status updates over this
96 // dbus service. 107 // dbus service.
97 UpdateEngineService* dbus_service_; 108 UpdateEngineService* dbus_service_;
98 109
99 // pointer to the OmahaResponseHandlerAction in the actions_ vector; 110 // pointer to the OmahaResponseHandlerAction in the actions_ vector;
100 std::tr1::shared_ptr<OmahaResponseHandlerAction> response_handler_action_; 111 std::tr1::shared_ptr<OmahaResponseHandlerAction> response_handler_action_;
101 112
102 // Pointer to the UMA metrics collection library. 113 // Pointer to the UMA metrics collection library.
103 MetricsLibraryInterface* metrics_lib_; 114 MetricsLibraryInterface* metrics_lib_;
104 115
116 // Pending error event, if any.
117 scoped_ptr<OmahaEvent> error_event_;
118
105 // For status: 119 // For status:
106 UpdateStatus status_; 120 UpdateStatus status_;
107 double download_progress_; 121 double download_progress_;
108 int64_t last_checked_time_; 122 int64_t last_checked_time_;
109 std::string new_version_; 123 std::string new_version_;
110 int64_t new_size_; 124 int64_t new_size_;
111 125
112 // Device paramaters common to all Omaha requests. 126 // Device paramaters common to all Omaha requests.
113 OmahaRequestDeviceParams omaha_request_params_; 127 OmahaRequestDeviceParams omaha_request_params_;
114 128
115 DISALLOW_COPY_AND_ASSIGN(UpdateAttempter); 129 DISALLOW_COPY_AND_ASSIGN(UpdateAttempter);
116 }; 130 };
117 131
118 } // namespace chromeos_update_engine 132 } // namespace chromeos_update_engine
119 133
120 #endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__ 134 #endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_ATTEMPTER_H__
OLDNEW
« no previous file with comments | « no previous file | update_attempter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698