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

Unified Diff: src/cashew_server.cc

Issue 3576011: Cashew: track cellular service state. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/cashew.git
Patch Set: Make debug logging less verbose 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/cashew_server.h ('k') | src/data_plan.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/cashew_server.cc
diff --git a/src/cashew_server.cc b/src/cashew_server.cc
index a5c0aa47827a069a610e2afe91f77b6e7d49f81d..54c528109322a78511bc97dd12eab9bfb7d89df1 100644
--- a/src/cashew_server.cc
+++ b/src/cashew_server.cc
@@ -11,36 +11,52 @@ namespace cashew {
const char* CashewServer::kServiceName = "org.chromium.Cashew";
const char* CashewServer::kServicePath = "/org/chromium/Cashew";
-CashewServer::CashewServer(DBus::Connection& connection) // NOLINT
- : DBus::ObjectAdaptor(connection, kServicePath) {
+// Cashew D-Bus errors
+const char* kCashewErrorServiceUnknown =
+ "org.chromium.Cashew.Error.ServiceUnknown";
+
+CashewServer::CashewServer(DBus::Connection& connection, // NOLINT
+ const ServiceManager& service_manager)
+ : DBus::ObjectAdaptor(connection, kServicePath),
+ service_manager_(service_manager) {
+}
+
+CashewServer::~CashewServer() {
}
// Cashew D-Bus API methods
-DataPlanList CashewServer::GetDataPlans(const std::string& service,
- DBus::Error& error) { // NOLINT
- DLOG(INFO) << "GetDataPlans: service = " << service;
- // TODO(vlaviano): log and return error if we don't like service arg
-
- // For now, we return hardcoded data.
- // TODO(vlaviano): return real data.
- DataPlan hardcoded_plan;
- GetHardcodedDataPlan(&hardcoded_plan);
- DataPlanList data_plans;
- data_plans.push_back(hardcoded_plan);
- return data_plans;
+DBusDataPlanList CashewServer::GetDataPlans(const std::string& service_path,
+ DBus::Error& error) { // NOLINT
+ DLOG(INFO) << "GetDataPlans: service = " << service_path;
+ DBusDataPlanList dbus_data_plans;
+ const Service *service = service_manager_.GetService(service_path);
+ if (service == NULL) {
+ DLOG(WARNING) << "GetDataPlans: unknown service: " << service_path;
+ error.set(kCashewErrorServiceUnknown, service_path.c_str());
+ DCHECK(dbus_data_plans.empty());
+ return dbus_data_plans;
+ }
+ dbus_data_plans = service->GetDBusDataPlans();
+ return dbus_data_plans;
}
-void CashewServer::RequestDataPlansUpdate(const std::string& service,
+void CashewServer::RequestDataPlansUpdate(const std::string& service_path,
DBus::Error& error) { // NOLINT
- DLOG(INFO) << "RequestDataPlansUpdate: service = " << service;
- // TODO(vlaviano): log and return error if we don't like service arg
+ DLOG(INFO) << "RequestDataPlansUpdate: service = " << service_path;
+ const Service *service = service_manager_.GetService(service_path);
+ if (service == NULL) {
+ DLOG(WARNING) << "RequestDataPlansUpdate: unknown service: "
+ << service_path;
+ error.set(kCashewErrorServiceUnknown, service_path.c_str());
+ return;
+ }
// trigger a DataPlansUpdate signal
// TODO(vlaviano): rate-limiting?
// TODO(vlaviano): if cached data isn't recent, ask carrier API for fresh
// data and wait for reply before sending signal.
- EmitDataPlansUpdateSignal(service);
+ EmitDataPlansUpdateSignal(*service);
}
bool CashewServer::IsAlive(DBus::Error& error) { // NOLINT
@@ -50,39 +66,12 @@ bool CashewServer::IsAlive(DBus::Error& error) { // NOLINT
// Private methods
-void CashewServer::EmitDataPlansUpdateSignal(const std::string& service) {
- DLOG(INFO) << "EmitDataPlansUpdateSignal: service = " << service;
- // TODO(vlaviano): log error and return if we don't like service arg
-
- // For now, we return hardcoded data.
- // TODO(vlaviano): return real data.
- DataPlan hardcoded_plan;
- GetHardcodedDataPlan(&hardcoded_plan);
- DataPlanList data_plans;
- data_plans.push_back(hardcoded_plan);
+void CashewServer::EmitDataPlansUpdateSignal(const Service& service) {
+ DLOG(INFO) << "EmitDataPlansUpdateSignal: service = " << service.GetPath();
+ DBusDataPlanList dbus_data_plans = service.GetDBusDataPlans();
// send out the signal
- this->DataPlansUpdate(service, data_plans);
-}
-
-void CashewServer::GetHardcodedDataPlan(DataPlan* plan) {
- DCHECK(plan != NULL);
-
- const std::string plan_name = "test";
- const std::string plan_type = "UNLIMITED";
- int64 plan_update_time = 0;
- int64 plan_start_time = time(NULL) - 12*3600; // 12 hours ago
- int64 plan_end_time = time(NULL) + 12*3600; // 12 hours hence
- int64 plan_data_bytes = 100*1024*1024; // 100 MB
- int64 plan_data_bytes_used = 30*1024*1024; // 30 MB
-
- (*plan)["CellularPlanName"].writer().append_string(plan_name.c_str());
- (*plan)["CellularPlanType"].writer().append_string(plan_type.c_str());
- (*plan)["CellularPlanUpdateTime"].writer().append_int64(plan_update_time);
- (*plan)["CellularPlanStart"].writer().append_int64(plan_start_time);
- (*plan)["CellularPlanEnd"].writer().append_int64(plan_end_time);
- (*plan)["CellularPlanDataBytes"].writer().append_int64(plan_data_bytes);
- (*plan)["CellularDataBytesUsed"].writer().append_int64(plan_data_bytes_used);
+ DataPlansUpdate(service.GetPath(), dbus_data_plans);
}
} // namespace cashew
« no previous file with comments | « src/cashew_server.h ('k') | src/data_plan.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698