mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-28 22:57:37 +00:00
245 lines
8.3 KiB
Diff
245 lines
8.3 KiB
Diff
# HG changeset patch
|
|
# Parent 2edd69b245fbc493c3a1cf17c40c63b0280ead12
|
|
Bug 1314968 - Disentangle nsWifiScannerDBus::SendMessage. r?kanru
|
|
|
|
Make a copy of the function and specialize it for each message sent.
|
|
Avoids the mess of comparing the method name to figure out what to do.
|
|
|
|
diff --git a/netwerk/wifi/nsWifiScannerDBus.cpp b/netwerk/wifi/nsWifiScannerDBus.cpp
|
|
--- a/netwerk/wifi/nsWifiScannerDBus.cpp
|
|
+++ b/netwerk/wifi/nsWifiScannerDBus.cpp
|
|
@@ -34,19 +34,47 @@ nsWifiScannerDBus::Scan()
|
|
if (!mConnection) {
|
|
return NS_ERROR_NOT_AVAILABLE;
|
|
}
|
|
- return SendMessage("org.freedesktop.NetworkManager",
|
|
- "/org/freedesktop/NetworkManager",
|
|
- "GetDevices");
|
|
+ return SendGetDevices();
|
|
}
|
|
|
|
+// http://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html
|
|
+// Refer to function dbus_connection_send_with_reply_and_block.
|
|
+static const uint32_t DBUS_DEFAULT_TIMEOUT = -1;
|
|
+
|
|
nsresult
|
|
-nsWifiScannerDBus::SendMessage(const char* aInterface,
|
|
- const char* aPath,
|
|
- const char* aFuncCall)
|
|
-{
|
|
- RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
|
|
- dbus_message_new_method_call("org.freedesktop.NetworkManager",
|
|
- aPath, aInterface, aFuncCall));
|
|
+nsWifiScannerDBus::SendGetDevices()
|
|
+{
|
|
+ RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
|
|
+ dbus_message_new_method_call("org.freedesktop.NetworkManager",
|
|
+ "/org/freedesktop/NetworkManager",
|
|
+ "org.freedesktop.NetworkManager",
|
|
+ "GetDevices"));
|
|
+ if (!msg) {
|
|
+ return NS_ERROR_FAILURE;
|
|
+ }
|
|
+
|
|
+ DBusError err;
|
|
+ dbus_error_init(&err);
|
|
+
|
|
+ RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
|
|
+ dbus_connection_send_with_reply_and_block(mConnection, msg,
|
|
+ DBUS_DEFAULT_TIMEOUT, &err));
|
|
+ if (dbus_error_is_set(&err)) {
|
|
+ dbus_error_free(&err);
|
|
+ return NS_ERROR_FAILURE;
|
|
+ }
|
|
+
|
|
+ return IdentifyDevices(reply);
|
|
+}
|
|
+
|
|
+nsresult
|
|
+nsWifiScannerDBus::SendGetDeviceType(const char* aPath)
|
|
+{
|
|
+ RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
|
|
+ dbus_message_new_method_call("org.freedesktop.NetworkManager",
|
|
+ aPath,
|
|
+ "org.freedesktop.DBus.Properties",
|
|
+ "Get"));
|
|
if (!msg) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
@@ -54,58 +82,92 @@ nsWifiScannerDBus::SendMessage(const cha
|
|
DBusMessageIter argsIter;
|
|
dbus_message_iter_init_append(msg, &argsIter);
|
|
|
|
- if (!strcmp(aFuncCall, "Get")) {
|
|
- const char* paramInterface = "org.freedesktop.NetworkManager.Device";
|
|
- if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
|
|
- ¶mInterface)) {
|
|
- return NS_ERROR_FAILURE;
|
|
- }
|
|
-
|
|
- const char* paramDeviceType = "DeviceType";
|
|
- if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
|
|
- ¶mDeviceType)) {
|
|
- return NS_ERROR_FAILURE;
|
|
- }
|
|
- } else if (!strcmp(aFuncCall, "GetAll")) {
|
|
- const char* param = "";
|
|
- if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, ¶m)) {
|
|
- return NS_ERROR_FAILURE;
|
|
- }
|
|
- }
|
|
+ const char* paramInterface = "org.freedesktop.NetworkManager.Device";
|
|
+ if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
|
|
+ ¶mInterface)) {
|
|
+ return NS_ERROR_FAILURE;
|
|
+ }
|
|
+
|
|
+ const char* paramDeviceType = "DeviceType";
|
|
+ if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
|
|
+ ¶mDeviceType)) {
|
|
+ return NS_ERROR_FAILURE;
|
|
+ }
|
|
+
|
|
+ DBusError err;
|
|
+ dbus_error_init(&err);
|
|
+
|
|
+ RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
|
|
+ dbus_connection_send_with_reply_and_block(mConnection, msg,
|
|
+ DBUS_DEFAULT_TIMEOUT, &err));
|
|
+ if (dbus_error_is_set(&err)) {
|
|
+ dbus_error_free(&err);
|
|
+ return NS_ERROR_FAILURE;
|
|
+ }
|
|
+
|
|
+ return IdentifyDeviceType(reply, aPath);
|
|
+}
|
|
+
|
|
+nsresult
|
|
+nsWifiScannerDBus::SendGetAccessPoints(const char* aPath)
|
|
+{
|
|
+ RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
|
|
+ dbus_message_new_method_call("org.freedesktop.NetworkManager",
|
|
+ aPath,
|
|
+ "org.freedesktop.NetworkManager.Device.Wireless",
|
|
+ "GetAccessPoints"));
|
|
+ if (!msg) {
|
|
+ return NS_ERROR_FAILURE;
|
|
+ }
|
|
|
|
DBusError err;
|
|
dbus_error_init(&err);
|
|
|
|
- // http://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html
|
|
- // Refer to function dbus_connection_send_with_reply_and_block.
|
|
- const uint32_t DBUS_DEFAULT_TIMEOUT = -1;
|
|
RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
|
|
dbus_connection_send_with_reply_and_block(mConnection, msg,
|
|
DBUS_DEFAULT_TIMEOUT, &err));
|
|
if (dbus_error_is_set(&err)) {
|
|
dbus_error_free(&err);
|
|
-
|
|
// In the GetAccessPoints case, if there are no access points, error is set.
|
|
// We don't want to error out here.
|
|
- if (!strcmp(aFuncCall, "GetAccessPoints")) {
|
|
- return NS_OK;
|
|
- }
|
|
- return NS_ERROR_FAILURE;
|
|
+ return NS_OK;
|
|
}
|
|
|
|
- nsresult rv;
|
|
- if (!strcmp(aFuncCall, "GetDevices")) {
|
|
- rv = IdentifyDevices(reply);
|
|
- } else if (!strcmp(aFuncCall, "Get")) {
|
|
- rv = IdentifyDeviceType(reply, aPath);
|
|
- } else if (!strcmp(aFuncCall, "GetAccessPoints")) {
|
|
- rv = IdentifyAccessPoints(reply);
|
|
- } else if (!strcmp(aFuncCall, "GetAll")) {
|
|
- rv = IdentifyAPProperties(reply);
|
|
- } else {
|
|
- rv = NS_ERROR_FAILURE;
|
|
- }
|
|
- return rv;
|
|
+ return IdentifyAccessPoints(reply);
|
|
+}
|
|
+
|
|
+nsresult
|
|
+nsWifiScannerDBus::SendGetAPProperties(const char* aPath)
|
|
+{
|
|
+ RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
|
|
+ dbus_message_new_method_call("org.freedesktop.NetworkManager",
|
|
+ aPath,
|
|
+ "org.freedesktop.DBus.Properties",
|
|
+ "GetAll"));
|
|
+ if (!msg) {
|
|
+ return NS_ERROR_FAILURE;
|
|
+ }
|
|
+
|
|
+ DBusMessageIter argsIter;
|
|
+ dbus_message_iter_init_append(msg, &argsIter);
|
|
+
|
|
+ const char* param = "";
|
|
+ if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, ¶m)) {
|
|
+ return NS_ERROR_FAILURE;
|
|
+ }
|
|
+
|
|
+ DBusError err;
|
|
+ dbus_error_init(&err);
|
|
+
|
|
+ RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
|
|
+ dbus_connection_send_with_reply_and_block(mConnection, msg,
|
|
+ DBUS_DEFAULT_TIMEOUT, &err));
|
|
+ if (dbus_error_is_set(&err)) {
|
|
+ dbus_error_free(&err);
|
|
+ return NS_ERROR_FAILURE;
|
|
+ }
|
|
+
|
|
+ return IdentifyAPProperties(reply);
|
|
}
|
|
|
|
nsresult
|
|
@@ -126,7 +188,7 @@ nsWifiScannerDBus::IdentifyDevices(DBusM
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
- rv = SendMessage("org.freedesktop.DBus.Properties", devicePath, "Get");
|
|
+ rv = SendGetDeviceType(devicePath);
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
} while (dbus_message_iter_next(&iter));
|
|
|
|
@@ -159,8 +221,7 @@ nsWifiScannerDBus::IdentifyDeviceType(DB
|
|
const uint32_t NM_DEVICE_TYPE_WIFI = 2;
|
|
nsresult rv = NS_OK;
|
|
if (deviceType == NM_DEVICE_TYPE_WIFI) {
|
|
- rv = SendMessage("org.freedesktop.NetworkManager.Device.Wireless",
|
|
- aDevicePath, "GetAccessPoints");
|
|
+ rv = SendGetAccessPoints(aDevicePath);
|
|
}
|
|
|
|
return rv;
|
|
@@ -183,7 +244,7 @@ nsWifiScannerDBus::IdentifyAccessPoints(
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
- rv = SendMessage("org.freedesktop.DBus.Properties", path, "GetAll");
|
|
+ rv = SendGetAPProperties(path);
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
} while (dbus_message_iter_next(&iter));
|
|
|
|
diff --git a/netwerk/wifi/nsWifiScannerDBus.h b/netwerk/wifi/nsWifiScannerDBus.h
|
|
--- a/netwerk/wifi/nsWifiScannerDBus.h
|
|
+++ b/netwerk/wifi/nsWifiScannerDBus.h
|
|
@@ -25,9 +25,10 @@ public:
|
|
nsresult Scan();
|
|
|
|
private:
|
|
- nsresult SendMessage(const char* aInterface,
|
|
- const char* aPath,
|
|
- const char* aFuncCall);
|
|
+ nsresult SendGetDevices();
|
|
+ nsresult SendGetDeviceType(const char* aPath);
|
|
+ nsresult SendGetAccessPoints(const char* aPath);
|
|
+ nsresult SendGetAPProperties(const char* aPath);
|
|
nsresult IdentifyDevices(DBusMessage* aMsg);
|
|
nsresult IdentifyDeviceType(DBusMessage* aMsg, const char* aDevicePath);
|
|
nsresult IdentifyAccessPoints(DBusMessage* aMsg);
|