| // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CROMO_CROMO_SERVER_H_ |
| #define CROMO_CROMO_SERVER_H_ |
| |
| #include <map> |
| #include <memory> |
| #include <string> |
| #include <vector> |
| |
| #include <base/macros.h> |
| #include <dbus-c++/dbus.h> |
| #include <dbus-c++/glib-integration.h> |
| #include <metrics/metrics_library.h> |
| |
| #include "cromo/carrier.h" |
| #include "cromo/hooktable.h" |
| #include "dbus_adaptors/org.freedesktop.ModemManager.h" |
| |
| class ModemHandler; |
| |
| // Implements the ModemManager DBus API, and manages the |
| // modem manager instances that handle specific types of |
| // modems. |
| class CromoServer : public org::freedesktop::ModemManager_adaptor, |
| public DBus::IntrospectableAdaptor, |
| public DBus::ObjectAdaptor { |
| public: |
| explicit CromoServer(DBus::Connection& connection); // NOLINT - refs. |
| ~CromoServer(); |
| |
| void AddModemHandler(ModemHandler* handler); |
| void CheckForPowerDaemon(); |
| |
| // .*Carrier.* are exported to plugins. See Makefile for details |
| void AddCarrier(Carrier* carrier); |
| Carrier* FindCarrierByCarrierId(carrier_id_t carrier_id_t); |
| Carrier* FindCarrierByName(const std::string& carrier_name); |
| // Returns a carrier for a modem class to use before it's figured |
| // out a real carrier |
| Carrier* FindCarrierNoOp(); |
| |
| // ModemManager DBUS API methods. |
| std::vector<DBus::Path> EnumerateDevices( |
| DBus::Error& error); // NOLINT - refs. |
| void ScanDevices(DBus::Error& error) {} // NOLINT - refs. |
| void SetLogging(const std::string& level, |
| DBus::Error& error); // NOLINT - refs. |
| |
| static const char* kServiceName; |
| static const char* kServicePath; |
| |
| HookTable& start_exit_hooks() { return start_exit_hooks_; } |
| HookTable& exit_ok_hooks() { return exit_ok_hooks_; } |
| |
| private: |
| typedef std::map<std::string, Carrier*> CarrierMap; |
| typedef std::vector<ModemHandler*> ModemHandlers; |
| |
| // The modem handlers that we are managing. |
| ModemHandlers modem_handlers_; |
| |
| CarrierMap carriers_; |
| std::unique_ptr<Carrier> carrier_no_op_; |
| |
| HookTable start_exit_hooks_; |
| HookTable exit_ok_hooks_; |
| |
| std::unique_ptr<MetricsLibraryInterface> metrics_lib_; |
| |
| DISALLOW_COPY_AND_ASSIGN(CromoServer); |
| }; |
| |
| #endif // CROMO_CROMO_SERVER_H_ |