| Index: src/service_impl.cc
|
| diff --git a/src/service_impl.cc b/src/service_impl.cc
|
| index da04095e89661261ce3614a743d11a41e02bf610..ee69de61324cd952e277a71c310c4c9c12a93d18 100644
|
| --- a/src/service_impl.cc
|
| +++ b/src/service_impl.cc
|
| @@ -259,35 +259,14 @@ void ServiceImpl::OnCarrierUpdate(const std::string& carrier) {
|
| }
|
|
|
| void ServiceImpl::OnByteCounterUpdate(uint64 rx_bytes, uint64 tx_bytes) {
|
| - DCHECK(device_ != NULL);
|
| - DCHECK(device_->ByteCounterRunning());
|
| DLOG(INFO) << path_ << ": OnByteCounterUpdate: rx_bytes = " << rx_bytes
|
| << ", tx_bytes = " << tx_bytes;
|
| - DataPlan *active_plan = DataPlan::GetActivePlan(data_plans_);
|
| - if (active_plan == NULL) {
|
| - DLOG(WARNING) << path_ << ": OnByteCounterUpdate: no active plan";
|
| - return;
|
| + // dispatch this notification to our data plans list and consider sending
|
| + // out a signal if any plans were updated
|
| + if (DataPlan::OnByteCounterUpdate(&data_plans_, this, parent_, device_,
|
| + rx_bytes, tx_bytes)) {
|
| + MaybeEmitDataPlansUpdate();
|
| }
|
| - Bytes local_bytes_used = rx_bytes + tx_bytes;
|
| - DLOG(INFO) << path_ << ": OnByteCounterUpdate: local_bytes_used = "
|
| - << local_bytes_used;
|
| - // try to detect two error conditions:
|
| - // (1) overflow of the unsigned addition above prior to the assignment
|
| - // (2) no overflow, but result has high order bit set and so is interpreted as
|
| - // a negative number when assigned to |local_bytes_used|
|
| - if (local_bytes_used < 0 ||
|
| - static_cast<uint64>(local_bytes_used) < rx_bytes ||
|
| - static_cast<uint64>(local_bytes_used) < tx_bytes) {
|
| - LOG(WARNING) << path_ << ": OnByteCounterUpdate: overflow detected";
|
| - return;
|
| - }
|
| - active_plan->SetLocalBytesUsed(local_bytes_used);
|
| - DLOG(INFO) << path_
|
| - << ": OnByteCounterUpdate: updated plan state: data bytes used = "
|
| - << active_plan->GetDataBytesUsed() << ", local bytes used = "
|
| - << active_plan->GetLocalBytesUsed() << ", total bytes used = "
|
| - << active_plan->GetTotalBytesUsed();
|
| - MaybeEmitDataPlansUpdate();
|
| }
|
|
|
| // DataPlanProviderDelegate methods
|
| @@ -696,8 +675,8 @@ void ServiceImpl::AddHardcodedDataPlan() {
|
| base::TimeDelta twelve_hours = base::TimeDelta::FromHours(12);
|
| base::Time start_time = base::Time::Now() - twelve_hours;
|
| base::Time end_time = base::Time::Now() + twelve_hours;
|
| - Bytes data_bytes_max = 100*1024*1024; // 100 MB
|
| - Bytes data_bytes_used = 30*1024*1024; // 30 MB
|
| + ByteCount data_bytes_max = 100*1024*1024; // 100 MB
|
| + ByteCount data_bytes_used = 30*1024*1024; // 30 MB
|
|
|
| DataPlan *plan = new(std::nothrow) DataPlan(name, type, update_time,
|
| start_time, end_time,
|
|
|