On Fri, Dec 15, 2017 at 03:55:06PM +0800, Peter Xu wrote: > On Wed, Dec 13, 2017 at 03:37:02PM +0000, Stefan Hajnoczi wrote: > > On Tue, Dec 05, 2017 at 01:51:39PM +0800, Peter Xu wrote: > > > diff --git a/qga/main.c b/qga/main.c > > > index 62a62755bd..3b5ebbc1ee 100644 > > > --- a/qga/main.c > > > +++ b/qga/main.c > > > @@ -593,7 +593,8 @@ static void process_command(GAState *s, QDict *req) > > > } > > > > > > /* handle requests/control events coming in over the channel */ > > > -static void process_event(JSONMessageParser *parser, GQueue *tokens) > > > +static void process_event(JSONMessageParser *parser, GQueue *tokens, > > > + void *opaque) > > > { > > > GAState *s = container_of(parser, GAState, parser); > > > QDict *qdict; > > > @@ -1320,7 +1321,7 @@ static int run_agent(GAState *s, GAConfig *config, > > > int socket_activation) > > > s->command_state = ga_command_state_new(); > > > ga_command_state_init(s, s->command_state); > > > ga_command_state_init_all(s->command_state); > > > - json_message_parser_init(&s->parser, process_event); > > > + json_message_parser_init(&s->parser, process_event, NULL); > > > > This patch leaves the code with 2 ways of getting at state from the > > parser pointer: > > 1. Use container_of() like existing users. > > 2. Use the new (unused) opaque argument. > > > > Given that #1 exists, is this patch really necessary? > > I didn't really notice that. Thanks for pointing out. > > However even if so I would still prefer the opaque way to do it if > asked. Existing #1 of course works but IMHO is less flexible and has > dependency between structure layouts. > > How about I append another patch to convert existing users (or, I can > post as separate patches after this series)? It's not really a lot, > and the conversion would be obvious: > > *** qga/main.c: > run_agent[1324] json_message_parser_init(&s->parser, > process_event, NULL); > *** qobject/qjson.c: > qobject_from_jsonv[45] json_message_parser_init(&state.parser, > parse_json, NULL); > *** tests/libqtest.c: > qmp_fd_receive[438] json_message_parser_init(&qmp.parser, > qmp_response, NULL); > > Though, if you still insist, I can drop it too.
I prefer dropping it. Smaller patch series get reviewed quicker, cause fewer merge conflicts, are lower risk, etc. Stefan
signature.asc
Description: PGP signature