Add client ops instance arg
authorGeoff Levand <geoffrey.levand@am.sony.com>
Thu, 22 Jan 2009 00:27:00 +0000 (16:27 -0800)
committerJeremy Kerr <jk@ozlabs.org>
Sun, 1 Feb 2009 00:54:15 +0000 (11:54 +1100)
Add a user supplied agument to the struct discover_client_ops
callback routines that is suitable for managing client instance
data.

Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
ui/common/discover-client.c
ui/common/discover-client.h
ui/test/pb-test.c

index 422c1820cc57d45bcb5ce718c681a804d878b773..112fa65782e88e910e2ba3c11a03e1bb637b6ed2 100644 (file)
@@ -92,7 +92,7 @@ int discover_client_process(struct discover_client *client)
                        pb_log("%s: no device?\n", __func__);
                        return 0;
                }
-               client->ops.add_device(dev);
+               client->ops.add_device(dev, client->ops.cb_arg);
                talloc_free(dev);
                break;
        case PB_PROTOCOL_ACTION_REMOVE:
@@ -101,7 +101,7 @@ int discover_client_process(struct discover_client *client)
                        pb_log("%s: no device id?\n", __func__);
                        return 0;
                }
-               client->ops.remove_device(dev_id);
+               client->ops.remove_device(dev_id, client->ops.cb_arg);
                break;
        default:
                pb_log("%s: unknown action %d\n", __func__, message->action);
index 50bea6cbe085db39026eb3cbad9142d8093c12a6..bc2294aa20b84d557558a25335bca1a9abaf9eb7 100644 (file)
@@ -5,9 +5,17 @@
 
 struct discover_client;
 
+/**
+ * struct discover_client_ops - Application supplied client info.
+ * @add_device: PB_PROTOCOL_ACTION_ADD event callback.
+ * @remove_device: PB_PROTOCOL_ACTION_REMOVE event callback.
+ * @cb_arg: Client managed convenience variable passed to callbacks.
+ */
+
 struct discover_client_ops {
-       int     (*add_device)(struct device *);
-       void    (*remove_device)(char *);
+       int (*add_device)(struct device *device, void *arg);
+       void (*remove_device)(char *dev_id, void *arg);
+       void *cb_arg;
 };
 
 struct discover_client *discover_client_init(struct discover_client_ops *ops);
index 5f021ff7e73d73f6455c8855f5500a40f31a34ea..b6ff627566b9ce59fa6ebf8d45071ba5fa10e5b2 100644 (file)
@@ -3,7 +3,8 @@
 
 #include "ui/common/discover-client.h"
 
-static int print_device_add(struct device *device)
+static int print_device_add(struct device *device,
+       void __attribute__((unused)) *arg)
 {
        struct boot_option *opt;
 
@@ -27,13 +28,13 @@ static int print_device_add(struct device *device)
        return 0;
 }
 
-static void print_device_remove(char *dev_id)
+static void print_device_remove(char *dev_id, void __attribute__((unused)) *arg)
 {
        printf("removed device:\n");
        printf("\tid:   %s\n", dev_id);
 }
 
-struct discover_client_ops client_ops = {
+static struct discover_client_ops client_ops = {
        .add_device = print_device_add,
        .remove_device = print_device_remove,
 };