| Index: omaha_request_action.h
|
| diff --git a/omaha_request_action.h b/omaha_request_action.h
|
| index f8dddc899bcbeb0b14a262477e7e402af68067b3..582fe5f4a1ae295e8489a6234d0d48e963ccfd24 100644
|
| --- a/omaha_request_action.h
|
| +++ b/omaha_request_action.h
|
| @@ -93,28 +93,68 @@ struct OmahaResponse {
|
| };
|
| COMPILE_ASSERT(sizeof(off_t) == 8, off_t_not_64bit);
|
|
|
| +// This struct encapsulates the Omaha event information. For a
|
| +// complete list of defined event types and results, see
|
| +// http://code.google.com/p/omaha/wiki/ServerProtocol#event
|
| +struct OmahaEvent {
|
| + enum Type {
|
| + kTypeUnknown = 0,
|
| + kTypeDownloadComplete = 1,
|
| + kTypeInstallComplete = 2,
|
| + kTypeUpdateComplete = 3,
|
| + };
|
| +
|
| + enum Result {
|
| + kResultError = 0,
|
| + kResultSuccess = 1,
|
| + };
|
| +
|
| + OmahaEvent()
|
| + : type(kTypeUnknown),
|
| + result(kResultError),
|
| + error_code(0) {}
|
| + OmahaEvent(Type in_type, Result in_result, int in_error_code)
|
| + : type(in_type),
|
| + result(in_result),
|
| + error_code(in_error_code) {}
|
| +
|
| + Type type;
|
| + Result result;
|
| + int error_code;
|
| +};
|
| +
|
| class OmahaRequestAction;
|
| class NoneType;
|
|
|
| template<>
|
| class ActionTraits<OmahaRequestAction> {
|
| public:
|
| - // Takes parameters on the input pipe
|
| + // Takes parameters on the input pipe.
|
| typedef OmahaRequestParams InputObjectType;
|
| - // On success, puts the output path on output
|
| + // On UpdateCheck success, puts the Omaha response on output. Event
|
| + // requests do not have an output pipe.
|
| typedef OmahaResponse OutputObjectType;
|
| };
|
|
|
| class OmahaRequestAction : public Action<OmahaRequestAction>,
|
| public HttpFetcherDelegate {
|
| public:
|
| - // The ctor takes in all the parameters that will be used for
|
| - // making the request to Omaha. For some of them we have constants
|
| - // that should be used.
|
| + // The ctor takes in all the parameters that will be used for making
|
| + // the request to Omaha. For some of them we have constants that
|
| + // should be used.
|
| + //
|
| // Takes ownership of the passed in HttpFetcher. Useful for testing.
|
| + //
|
| + // Takes ownership of the passed in OmahaEvent. If |event| is NULL,
|
| + // this is an UpdateCheck request, otherwise it's an Event request.
|
| + // Event requests always succeed.
|
| + //
|
| // A good calling pattern is:
|
| - // OmahaRequestAction(..., new WhateverHttpFetcher);
|
| - OmahaRequestAction(HttpFetcher* http_fetcher);
|
| + // OmahaRequestAction(new OmahaEvent(...), new WhateverHttpFetcher);
|
| + // or
|
| + // OmahaRequestAction(NULL, new WhateverHttpFetcher);
|
| + OmahaRequestAction(OmahaEvent* event,
|
| + HttpFetcher* http_fetcher);
|
| virtual ~OmahaRequestAction();
|
| typedef ActionTraits<OmahaRequestAction>::InputObjectType InputObjectType;
|
| typedef ActionTraits<OmahaRequestAction>::OutputObjectType OutputObjectType;
|
| @@ -130,10 +170,16 @@ class OmahaRequestAction : public Action<OmahaRequestAction>,
|
| const char* bytes, int length);
|
| virtual void TransferComplete(HttpFetcher *fetcher, bool successful);
|
|
|
| + // Returns true if this is an Event request, false if it's an UpdateCheck.
|
| + bool IsEvent() const { return event_.get() != NULL; }
|
| +
|
| private:
|
| // These are data that are passed in the request to the Omaha server
|
| OmahaRequestParams params_;
|
|
|
| + // Pointer to the OmahaEvent info. This is an UpdateCheck request if NULL.
|
| + scoped_ptr<OmahaEvent> event_;
|
| +
|
| // pointer to the HttpFetcher that does the http work
|
| scoped_ptr<HttpFetcher> http_fetcher_;
|
|
|
|
|