Index: src/data_plan.h |
diff --git a/src/data_plan.h b/src/data_plan.h |
index 4a1fe50a6bf376068ceabf4d0d0bd5ce66441895..701118e517e3d351883e7f7fcc990b3834d02477 100644 |
--- a/src/data_plan.h |
+++ b/src/data_plan.h |
@@ -20,11 +20,14 @@ |
namespace cashew { |
class DataPlan; |
+class Device; |
class Policy; |
+class Service; |
+class ServiceManager; |
// byte count |
// TODO(vlaviano): this should be a uint64, but libcros/Chrome expects this |
-typedef int64 Bytes; |
+typedef int64 ByteCount; |
// List of DataPlan objects |
// TODO(vlaviano): consider promoting this from a typedef to a class |
@@ -49,7 +52,8 @@ class DataPlan { |
// |data_bytes_max| must be set to 0 for unlimited plans |
DataPlan(const std::string& name, DataPlan::Type type, |
base::Time update_time, base::Time start_time, |
- base::Time end_time, Bytes data_bytes_max, Bytes data_bytes_used); |
+ base::Time end_time, ByteCount data_bytes_max, |
+ ByteCount data_bytes_used); |
virtual ~DataPlan(); |
// get plan name |
@@ -68,20 +72,20 @@ class DataPlan { |
virtual base::Time GetEndTime() const; |
// get plan max bytes |
- virtual Bytes GetDataBytesMax() const; |
+ virtual ByteCount GetDataBytesMax() const; |
// get plan used bytes |
- virtual Bytes GetDataBytesUsed() const; |
+ virtual ByteCount GetDataBytesUsed() const; |
// get local used bytes |
- virtual Bytes GetLocalBytesUsed() const; |
+ virtual ByteCount GetLocalBytesUsed() const; |
// set local used bytes |
// must be >= 0 |
- virtual void SetLocalBytesUsed(Bytes local_bytes_used); |
+ virtual void SetLocalBytesUsed(ByteCount local_bytes_used); |
// get total used bytes |
- virtual Bytes GetTotalBytesUsed() const; |
+ virtual ByteCount GetTotalBytesUsed() const; |
// is this an active plan? |
// we define active to mean that the plan is current and not exhausted |
@@ -105,6 +109,17 @@ class DataPlan { |
// returns NULL if list is empty or contains no active plans |
static DataPlan* GetActivePlan(const DataPlanList& data_plans); |
+ // event handler for |service's| local byte counter on |device| |
+ // updates active plans in |data_plans| based on the |rx_bytes| and |
+ // |tx_bytes| values gathered during the most recent sample interval |
+ // notifies |service_manager| if an active plan is completely consumed |
+ // returns true if any plans were updated and false otherwise |
+ // |data_plans|, |service|, |service_manager| and |device| must not be NULL |
+ static bool OnByteCounterUpdate(DataPlanList *data_plans, Service *service, |
+ ServiceManager *service_manager, |
+ Device *device, uint64 rx_bytes, |
+ uint64 tx_bytes); |
+ |
private: |
// human-readable plan name |
const std::string name_; |
@@ -124,20 +139,20 @@ class DataPlan { |
// max bytes available during plan period |
// irrelevant for plans of type kTypeUnlimited |
- const Bytes data_bytes_max_; |
+ const ByteCount data_bytes_max_; |
// bytes consumed so far during plan period |
// this measurement comes from the carrier API |
- Bytes data_bytes_used_; |
+ ByteCount data_bytes_used_; |
// local measurement of bytes used since we received |data_bytes_used_| |
// baseline from the carrier API |
- Bytes local_bytes_used_; |
+ ByteCount local_bytes_used_; |
// our best estimate of total bytes used for this plan |
// carrier baseline (|data_bytes_used_|) + |
// locally measured traffic (|local_bytes_used_|) |
- Bytes total_bytes_used_; |
+ ByteCount total_bytes_used_; |
// convert plan type enum value to string formatted for libcros |
const char* TypeToLibcrosString(Type type) const; |