From 285059cfed1f7572f2a46ca1385f874642db3f17 Mon Sep 17 00:00:00 2001 From: Geoff Levand Date: Wed, 21 Jan 2009 16:27:00 -0800 Subject: [PATCH] Add client ops instance arg 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 Signed-off-by: Jeremy Kerr --- ui/common/discover-client.c | 4 ++-- ui/common/discover-client.h | 12 ++++++++++-- ui/test/pb-test.c | 7 ++++--- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/ui/common/discover-client.c b/ui/common/discover-client.c index 422c182..112fa65 100644 --- a/ui/common/discover-client.c +++ b/ui/common/discover-client.c @@ -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); diff --git a/ui/common/discover-client.h b/ui/common/discover-client.h index 50bea6c..bc2294a 100644 --- a/ui/common/discover-client.h +++ b/ui/common/discover-client.h @@ -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); diff --git a/ui/test/pb-test.c b/ui/test/pb-test.c index 5f021ff..b6ff627 100644 --- a/ui/test/pb-test.c +++ b/ui/test/pb-test.c @@ -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, }; -- 2.39.2