Split ModemManager into ModemManagerBase and ModemManagerClassic
This is in preparation for building ModemManager1 to support the MM0.6
interface.
BUG=chromium-os:27014
TEST=unit tests, ran shill across multiple cromo restarts
Change-Id: I718c9508d81e12481be44cdaf5453679e08b905e
Reviewed-on: https://gerrit.chromium.org/gerrit/17249
Commit-Ready: David Rochberg <rochberg@chromium.org>
Reviewed-by: David Rochberg <rochberg@chromium.org>
Tested-by: David Rochberg <rochberg@chromium.org>
diff --git a/modem_manager.cc b/modem_manager.cc
index 5292522..009dea1 100644
--- a/modem_manager.cc
+++ b/modem_manager.cc
@@ -63,21 +63,14 @@
}
void ModemManager::Connect(const string &owner) {
+ // Inheriting classes call this superclass method.
owner_ = owner;
- proxy_.reset(proxy_factory_->CreateModemManagerProxy(this, path_, owner_));
-
- // TODO(petkov): Switch to asynchronous calls (crosbug.com/17583).
- vector<DBus::Path> devices = proxy_->EnumerateDevices();
- for (vector<DBus::Path>::const_iterator it = devices.begin();
- it != devices.end(); ++it) {
- AddModem(*it);
- }
}
void ModemManager::Disconnect() {
+ // Inheriting classes call this superclass method.
modems_.clear();
owner_.clear();
- proxy_.reset();
}
void ModemManager::OnAppear(GDBusConnection */*connection*/,
@@ -112,7 +105,7 @@
manager_,
provider_db_));
modems_[path] = modem;
- modem->Init();
+ InitModem(modem);
}
void ModemManager::RemoveModem(const string &path) {
@@ -122,9 +115,50 @@
}
void ModemManager::OnDeviceInfoAvailable(const string &link_name) {
- for (Modems::iterator it = modems_.begin(); it != modems_.end(); ++it) {
+ for (Modems::const_iterator it = modems_.begin(); it != modems_.end(); ++it) {
it->second->OnDeviceInfoAvailable(link_name);
}
}
+// ModemManagerClassic
+ModemManagerClassic::ModemManagerClassic(const std::string &service,
+ const std::string &path,
+ ControlInterface *control_interface,
+ EventDispatcher *dispatcher,
+ Metrics *metrics,
+ Manager *manager,
+ GLib *glib,
+ mobile_provider_db *provider_db) :
+ ModemManager(service,
+ path,
+ control_interface,
+ dispatcher,
+ metrics,
+ manager,
+ glib,
+ provider_db) {}
+
+ModemManagerClassic::~ModemManagerClassic() {}
+
+void ModemManagerClassic::Connect(const string &supplied_owner) {
+ ModemManager::Connect(supplied_owner);
+ proxy_.reset(proxy_factory()->CreateModemManagerProxy(this, path(), owner()));
+
+ // TODO(petkov): Switch to asynchronous calls (crosbug.com/17583).
+ vector<DBus::Path> devices = proxy_->EnumerateDevices();
+ for (vector<DBus::Path>::const_iterator it = devices.begin();
+ it != devices.end(); ++it) {
+ AddModem(*it);
+ }
+}
+
+void ModemManagerClassic::Disconnect() {
+ ModemManager::Disconnect();
+ proxy_.reset();
+}
+
+void ModemManagerClassic::InitModem(shared_ptr<Modem> modem) {
+ modem->Init();
+}
+
} // namespace shill