| OLD | NEW |
| 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 #include "src/cashew_server.h" | 5 #include "src/cashew_server.h" |
| 6 | 6 |
| 7 #include <glog/logging.h> | 7 #include <glog/logging.h> |
| 8 | 8 |
| 9 namespace cashew { | 9 namespace cashew { |
| 10 | 10 |
| 11 const char* CashewServer::kServiceName = "org.chromium.Cashew"; | 11 const char* CashewServer::kServiceName = "org.chromium.Cashew"; |
| 12 const char* CashewServer::kServicePath = "/org/chromium/Cashew"; | 12 const char* CashewServer::kServicePath = "/org/chromium/Cashew"; |
| 13 | 13 |
| 14 CashewServer::CashewServer(DBus::Connection& connection) // NOLINT | 14 // Cashew D-Bus errors |
| 15 : DBus::ObjectAdaptor(connection, kServicePath) { | 15 const char* kCashewErrorServiceUnknown = |
| 16 "org.chromium.Cashew.Error.ServiceUnknown"; |
| 17 |
| 18 CashewServer::CashewServer(DBus::Connection& connection, // NOLINT |
| 19 const ServiceManager& service_manager) |
| 20 : DBus::ObjectAdaptor(connection, kServicePath), |
| 21 service_manager_(service_manager) { |
| 22 } |
| 23 |
| 24 CashewServer::~CashewServer() { |
| 16 } | 25 } |
| 17 | 26 |
| 18 // Cashew D-Bus API methods | 27 // Cashew D-Bus API methods |
| 19 | 28 |
| 20 DataPlanList CashewServer::GetDataPlans(const std::string& service, | 29 DBusDataPlanList CashewServer::GetDataPlans(const std::string& service_path, |
| 21 DBus::Error& error) { // NOLINT | 30 DBus::Error& error) { // NOLINT |
| 22 DLOG(INFO) << "GetDataPlans: service = " << service; | 31 DLOG(INFO) << "GetDataPlans: service = " << service_path; |
| 23 // TODO(vlaviano): log and return error if we don't like service arg | 32 DBusDataPlanList dbus_data_plans; |
| 24 | 33 const Service *service = service_manager_.GetService(service_path); |
| 25 // For now, we return hardcoded data. | 34 if (service == NULL) { |
| 26 // TODO(vlaviano): return real data. | 35 DLOG(WARNING) << "GetDataPlans: unknown service: " << service_path; |
| 27 DataPlan hardcoded_plan; | 36 error.set(kCashewErrorServiceUnknown, service_path.c_str()); |
| 28 GetHardcodedDataPlan(&hardcoded_plan); | 37 DCHECK(dbus_data_plans.empty()); |
| 29 DataPlanList data_plans; | 38 return dbus_data_plans; |
| 30 data_plans.push_back(hardcoded_plan); | 39 } |
| 31 return data_plans; | 40 dbus_data_plans = service->GetDBusDataPlans(); |
| 41 return dbus_data_plans; |
| 32 } | 42 } |
| 33 | 43 |
| 34 void CashewServer::RequestDataPlansUpdate(const std::string& service, | 44 void CashewServer::RequestDataPlansUpdate(const std::string& service_path, |
| 35 DBus::Error& error) { // NOLINT | 45 DBus::Error& error) { // NOLINT |
| 36 DLOG(INFO) << "RequestDataPlansUpdate: service = " << service; | 46 DLOG(INFO) << "RequestDataPlansUpdate: service = " << service_path; |
| 37 // TODO(vlaviano): log and return error if we don't like service arg | 47 const Service *service = service_manager_.GetService(service_path); |
| 48 if (service == NULL) { |
| 49 DLOG(WARNING) << "RequestDataPlansUpdate: unknown service: " |
| 50 << service_path; |
| 51 error.set(kCashewErrorServiceUnknown, service_path.c_str()); |
| 52 return; |
| 53 } |
| 38 | 54 |
| 39 // trigger a DataPlansUpdate signal | 55 // trigger a DataPlansUpdate signal |
| 40 // TODO(vlaviano): rate-limiting? | 56 // TODO(vlaviano): rate-limiting? |
| 41 // TODO(vlaviano): if cached data isn't recent, ask carrier API for fresh | 57 // TODO(vlaviano): if cached data isn't recent, ask carrier API for fresh |
| 42 // data and wait for reply before sending signal. | 58 // data and wait for reply before sending signal. |
| 43 EmitDataPlansUpdateSignal(service); | 59 EmitDataPlansUpdateSignal(*service); |
| 44 } | 60 } |
| 45 | 61 |
| 46 bool CashewServer::IsAlive(DBus::Error& error) { // NOLINT | 62 bool CashewServer::IsAlive(DBus::Error& error) { // NOLINT |
| 47 DLOG(INFO) << "IsAlive"; | 63 DLOG(INFO) << "IsAlive"; |
| 48 return true; | 64 return true; |
| 49 } | 65 } |
| 50 | 66 |
| 51 // Private methods | 67 // Private methods |
| 52 | 68 |
| 53 void CashewServer::EmitDataPlansUpdateSignal(const std::string& service) { | 69 void CashewServer::EmitDataPlansUpdateSignal(const Service& service) { |
| 54 DLOG(INFO) << "EmitDataPlansUpdateSignal: service = " << service; | 70 DLOG(INFO) << "EmitDataPlansUpdateSignal: service = " << service.GetPath(); |
| 55 // TODO(vlaviano): log error and return if we don't like service arg | 71 DBusDataPlanList dbus_data_plans = service.GetDBusDataPlans(); |
| 56 | |
| 57 // For now, we return hardcoded data. | |
| 58 // TODO(vlaviano): return real data. | |
| 59 DataPlan hardcoded_plan; | |
| 60 GetHardcodedDataPlan(&hardcoded_plan); | |
| 61 DataPlanList data_plans; | |
| 62 data_plans.push_back(hardcoded_plan); | |
| 63 | 72 |
| 64 // send out the signal | 73 // send out the signal |
| 65 this->DataPlansUpdate(service, data_plans); | 74 DataPlansUpdate(service.GetPath(), dbus_data_plans); |
| 66 } | |
| 67 | |
| 68 void CashewServer::GetHardcodedDataPlan(DataPlan* plan) { | |
| 69 DCHECK(plan != NULL); | |
| 70 | |
| 71 const std::string plan_name = "test"; | |
| 72 const std::string plan_type = "UNLIMITED"; | |
| 73 int64 plan_update_time = 0; | |
| 74 int64 plan_start_time = time(NULL) - 12*3600; // 12 hours ago | |
| 75 int64 plan_end_time = time(NULL) + 12*3600; // 12 hours hence | |
| 76 int64 plan_data_bytes = 100*1024*1024; // 100 MB | |
| 77 int64 plan_data_bytes_used = 30*1024*1024; // 30 MB | |
| 78 | |
| 79 (*plan)["CellularPlanName"].writer().append_string(plan_name.c_str()); | |
| 80 (*plan)["CellularPlanType"].writer().append_string(plan_type.c_str()); | |
| 81 (*plan)["CellularPlanUpdateTime"].writer().append_int64(plan_update_time); | |
| 82 (*plan)["CellularPlanStart"].writer().append_int64(plan_start_time); | |
| 83 (*plan)["CellularPlanEnd"].writer().append_int64(plan_end_time); | |
| 84 (*plan)["CellularPlanDataBytes"].writer().append_int64(plan_data_bytes); | |
| 85 (*plan)["CellularDataBytesUsed"].writer().append_int64(plan_data_bytes_used); | |
| 86 } | 75 } |
| 87 | 76 |
| 88 } // namespace cashew | 77 } // namespace cashew |
| OLD | NEW |