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

Unified Diff: src/data_plan_provider.h

Issue 3528016: Cashew: implement backend usage API (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/cashew.git
Patch Set: Fix code review nits and remove hardcoded usage URLs Created 10 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/data_plan.cc ('k') | src/data_plan_provider.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/data_plan_provider.h
diff --git a/src/data_plan_provider.h b/src/data_plan_provider.h
new file mode 100644
index 0000000000000000000000000000000000000000..1f500a8f1953fabf861f488759b26c456ab8de6b
--- /dev/null
+++ b/src/data_plan_provider.h
@@ -0,0 +1,105 @@
+// Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SRC_DATA_PLAN_PROVIDER_H_
+#define SRC_DATA_PLAN_PROVIDER_H_
+
+#include <string>
+#include <vector>
+
+#include <base/basictypes.h> // NOLINT
+#include <base/scoped_ptr.h> // NOLINT
+#include <base/values.h> // NOLINT
+
+#include "src/http_fetcher.h"
+
+namespace cashew {
+
+class DataPlanProviderDelegate;
+
+// carrier usage API proxy
+class DataPlanProvider: public HttpFetcherDelegate {
+ public:
+ explicit DataPlanProvider(const std::string& carrier);
+ virtual ~DataPlanProvider();
+
+ // get cellular carrier for which this proxy is configured
+ virtual const std::string& GetCarrier() const;
+
+ // get usage API URL for which this proxy is configured
+ virtual const std::string& GetUsageUrl() const;
+
+ // set usage API URL for which this proxy is configured
+ virtual void SetUsageUrl(const std::string& usage_url);
+
+ // set delegate interface that will receive callbacks from this proxy
+ // it's ok to clear this by setting it to NULL
+ virtual void SetDelegate(DataPlanProviderDelegate *delegate);
+
+ // request that proxy obtain updated info from carrier API
+ // NOTES:
+ // - the request is asynchronous
+ // - the result will be returned via a callback to the delegate
+ // that has been set via SetDelegate
+ // - returns true on success and false on failure
+ // - success indicates only that a request to the API was initiated
+ // successfully, but it does not guarantee that the request will
+ // ultimately succeed
+ // - this call will fail if no valid url has been set via SetUsageUrl
+ // - this call will fail if no delegate has been set via SetDelegate
+ // - this call will return success and do nothing if an earlier
+ // request is already in progress
+ virtual bool RequestUsageUpdate();
+
+ // HttpFetcherDelegate methods
+
+ // transfer is progressing, we've received more bytes
+ virtual void ReceivedBytes(HttpFetcher *fetcher, const char *bytes,
+ int length);
+
+ // transfer has ended (either complete or aborted)
+ virtual void TransferComplete(HttpFetcher *fetcher, bool successful);
+
+ // cancel any pending requests that are in progress
+ void CancelPendingRequests();
+
+ private:
+ // cellular carrier
+ const std::string carrier_;
+
+ // usage API URL
+ std::string usage_url_;
+
+ // delegate
+ DataPlanProviderDelegate *delegate_;
+
+ // http fetcher
+ scoped_ptr<HttpFetcher> fetcher_;
+
+ // do we have an http request in progress?
+ bool request_in_progress_;
+
+ // stores response that we receive from usage API
+ std::vector<char> response_buffer_;
+
+ DISALLOW_COPY_AND_ASSIGN(DataPlanProvider);
+};
+
+// interface for delegates
+class DataPlanProviderDelegate {
+ public:
+ virtual ~DataPlanProviderDelegate() {}
+
+ // Called when request has either completed successfully or failed.
+ // |parsed_usage_update| will be NULL if |successful| is false.
+ // Caller owns |parsed_usage_update| and will delete it after this
+ // callback returns, so delegate should copy anything it needs.
+ virtual void OnRequestComplete(const DataPlanProvider *provider,
+ bool successful,
+ const Value *parsed_usage_update) = 0;
+};
+
+} // namespace cashew
+
+#endif // SRC_DATA_PLAN_PROVIDER_H_
« no previous file with comments | « src/data_plan.cc ('k') | src/data_plan_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698