| 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 #include "src/service_manager.h" |
| 10 |
| 9 namespace cashew { | 11 namespace cashew { |
| 10 | 12 |
| 11 const char* CashewServer::kServiceName = "org.chromium.Cashew"; | 13 const char* CashewServer::kServiceName = "org.chromium.Cashew"; |
| 12 const char* CashewServer::kServicePath = "/org/chromium/Cashew"; | 14 const char* CashewServer::kServicePath = "/org/chromium/Cashew"; |
| 13 | 15 |
| 14 // Cashew D-Bus errors | 16 // Cashew D-Bus errors |
| 15 const char* kCashewErrorServiceUnknown = | 17 const char* kCashewErrorServiceUnknown = |
| 16 "org.chromium.Cashew.Error.ServiceUnknown"; | 18 "org.chromium.Cashew.Error.ServiceUnknown"; |
| 17 | 19 |
| 18 CashewServer::CashewServer(DBus::Connection& connection, // NOLINT | 20 CashewServer::CashewServer(DBus::Connection& connection, // NOLINT |
| 19 const ServiceManager& service_manager) | 21 ServiceManager * const service_manager) |
| 20 : DBus::ObjectAdaptor(connection, kServicePath), | 22 : DBus::ObjectAdaptor(connection, kServicePath), |
| 21 service_manager_(service_manager) { | 23 service_manager_(CHECK_NOTNULL(service_manager)) { |
| 24 service_manager_->SetCashewServer(this); |
| 22 } | 25 } |
| 23 | 26 |
| 24 CashewServer::~CashewServer() { | 27 CashewServer::~CashewServer() { |
| 28 service_manager_->SetCashewServer(NULL); |
| 25 } | 29 } |
| 26 | 30 |
| 27 // Cashew D-Bus API methods | 31 // Cashew D-Bus API methods |
| 28 | 32 |
| 29 DBusDataPlanList CashewServer::GetDataPlans(const std::string& service_path, | 33 DBusDataPlanList CashewServer::GetDataPlans(const std::string& service_path, |
| 30 DBus::Error& error) { // NOLINT | 34 DBus::Error& error) { // NOLINT |
| 31 DLOG(INFO) << "GetDataPlans: service = " << service_path; | 35 DLOG(INFO) << "GetDataPlans: service = " << service_path; |
| 32 DBusDataPlanList dbus_data_plans; | 36 DBusDataPlanList dbus_data_plans; |
| 33 const Service *service = service_manager_.GetService(service_path); | 37 const Service *service = service_manager_->GetService(service_path); |
| 34 if (service == NULL) { | 38 if (service == NULL) { |
| 35 DLOG(WARNING) << "GetDataPlans: unknown service: " << service_path; | 39 DLOG(WARNING) << "GetDataPlans: unknown service: " << service_path; |
| 36 error.set(kCashewErrorServiceUnknown, service_path.c_str()); | 40 error.set(kCashewErrorServiceUnknown, service_path.c_str()); |
| 37 DCHECK(dbus_data_plans.empty()); | 41 DCHECK(dbus_data_plans.empty()); |
| 38 return dbus_data_plans; | 42 return dbus_data_plans; |
| 39 } | 43 } |
| 40 dbus_data_plans = service->GetDBusDataPlans(); | 44 dbus_data_plans = service->GetDBusDataPlans(); |
| 41 return dbus_data_plans; | 45 return dbus_data_plans; |
| 42 } | 46 } |
| 43 | 47 |
| 44 void CashewServer::RequestDataPlansUpdate(const std::string& service_path, | 48 void CashewServer::RequestDataPlansUpdate(const std::string& service_path, |
| 45 DBus::Error& error) { // NOLINT | 49 DBus::Error& error) { // NOLINT |
| 46 DLOG(INFO) << "RequestDataPlansUpdate: service = " << service_path; | 50 DLOG(INFO) << "RequestDataPlansUpdate: service = " << service_path; |
| 47 const Service *service = service_manager_.GetService(service_path); | 51 const Service *service = service_manager_->GetService(service_path); |
| 48 if (service == NULL) { | 52 if (service == NULL) { |
| 49 DLOG(WARNING) << "RequestDataPlansUpdate: unknown service: " | 53 DLOG(WARNING) << "RequestDataPlansUpdate: unknown service: " |
| 50 << service_path; | 54 << service_path; |
| 51 error.set(kCashewErrorServiceUnknown, service_path.c_str()); | 55 error.set(kCashewErrorServiceUnknown, service_path.c_str()); |
| 52 return; | 56 return; |
| 53 } | 57 } |
| 54 | 58 |
| 55 // trigger a DataPlansUpdate signal | 59 // trigger a DataPlansUpdate signal |
| 56 // TODO(vlaviano): rate-limiting? | 60 // TODO(vlaviano): rate-limiting? |
| 57 // TODO(vlaviano): if cached data isn't recent, ask carrier API for fresh | 61 // TODO(vlaviano): if cached data isn't recent, ask carrier API for fresh |
| 58 // data and wait for reply before sending signal. | 62 // data and wait for reply before sending signal. |
| 59 EmitDataPlansUpdateSignal(*service); | 63 EmitDataPlansUpdateSignal(*service); |
| 60 } | 64 } |
| 61 | 65 |
| 62 bool CashewServer::IsAlive(DBus::Error& error) { // NOLINT | 66 bool CashewServer::IsAlive(DBus::Error& error) { // NOLINT |
| 63 DLOG(INFO) << "IsAlive"; | 67 DLOG(INFO) << "IsAlive"; |
| 64 return true; | 68 return true; |
| 65 } | 69 } |
| 66 | 70 |
| 71 // Service Manager methods |
| 72 |
| 73 void CashewServer::EmitDataPlansUpdate(const Service& service) { |
| 74 EmitDataPlansUpdateSignal(service); |
| 75 } |
| 76 |
| 67 // Private methods | 77 // Private methods |
| 68 | 78 |
| 69 void CashewServer::EmitDataPlansUpdateSignal(const Service& service) { | 79 void CashewServer::EmitDataPlansUpdateSignal(const Service& service) { |
| 70 DLOG(INFO) << "EmitDataPlansUpdateSignal: service = " << service.GetPath(); | 80 DLOG(INFO) << "EmitDataPlansUpdateSignal: service = " << service.GetPath(); |
| 71 DBusDataPlanList dbus_data_plans = service.GetDBusDataPlans(); | 81 DBusDataPlanList dbus_data_plans = service.GetDBusDataPlans(); |
| 72 | 82 |
| 73 // send out the signal | 83 // send out the signal |
| 74 DataPlansUpdate(service.GetPath(), dbus_data_plans); | 84 DataPlansUpdate(service.GetPath(), dbus_data_plans); |
| 75 } | 85 } |
| 76 | 86 |
| 77 } // namespace cashew | 87 } // namespace cashew |
| OLD | NEW |