ui/common: Add discover_client_enumerate to re-add device data
authorJeremy Kerr <jk@ozlabs.org>
Thu, 24 Jul 2014 08:00:59 +0000 (16:00 +0800)
committerJeremy Kerr <jk@ozlabs.org>
Mon, 28 Jul 2014 05:50:35 +0000 (13:50 +0800)
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
ui/common/discover-client.c
ui/common/discover-client.h

index a124f8bee8d9ffd03eb008ca4bae26e801a53699..a565be880f272293eb0b372c72bf84a04b218f32 100644 (file)
@@ -112,6 +112,24 @@ static void device_remove(struct discover_client *client, const char *id)
        talloc_free(device);
 }
 
+void discover_client_enumerate(struct discover_client *client)
+{
+       struct boot_option *opt;
+       struct device *device;
+       int i;
+
+       for (i = 0; i < client->n_devices; i++) {
+               device = client->devices[i];
+               if (client->ops.device_add)
+                       client->ops.device_add(device, client->ops.cb_arg);
+
+               list_for_each_entry(&device->boot_options, opt, list)
+                       if (client->ops.boot_option_add)
+                               client->ops.boot_option_add(device, opt,
+                                               client->ops.cb_arg);
+       }
+}
+
 static void update_status(struct discover_client *client,
                struct boot_status *status)
 {
index 405bd243c5ee4dc1dfadd3fbf4fee6ef1cca6859..d5c573f22de0bdfed18c8d7387514c52bc252b00 100644 (file)
@@ -82,4 +82,9 @@ int discover_client_send_reinit(struct discover_client *client);
 /* Send new configuration data to the discover server */
 int discover_client_send_config(struct discover_client *client,
                struct config *config);
+
+/* Re-enumerate the collected devices & boot options, calling ops->device_add
+ * and ops->boot_option_add on each.
+ */
+void discover_client_enumerate(struct discover_client *client);
 #endif