On 6/29/19 12:28 PM, Richard W.M. Jones wrote: > > Obvious change given the previous patch, so ACK. > > I do wonder if we should make the notify parameter mandatory (and > therefore avoid the duplicate functions).
Maybe. I've already posted the patch for nbdkit to use the notify parameter. But for other language bindings, the version without a notify parameter may still be easier to use. > > Another trick you might do if feeling really keen is to > programmatically generate the notify variants of commands, something > like this: > > let make_notify_variant_of_call ({ args; longdesc } as call) = > let args = List.rev args in > let flags, args = List.hd args, List.tl args in > assert (flags = Flags "flags"); > let args = flags :: CallbackPersist ("notify", [ etc ]) :: args in It's a little trickier - the nbd_aio_pread_structured and nbd_aio_block_status already have an opaque parameter, but the other calls need to add an opaque. > let args = List.rev args in > let longdesc = longdesc ^ "\nThe C<notify> callback blah blah ..." in > { call with args; longdesc } > > let aio_pwrite_call = { > default_call with > args = [ BytesPersistIn ("buf", "count"); UInt64 "offset"; Flags "flags" ]; > ] > (* etc copy the definition of aio_pwrite *) > } > > let aio_pwrite_notify_call = make_notify_variant_of_call aio_pwrite_call > > let handle_calls = [ > ... > "aio_pwrite", aio_pwrite_call; > "aio_pwrite_notify", aio_pwrite_notify_call; > ... > ] > I may still play with the idea of better auto-generation of things, but it's orthogonal enough to not hold up this patch going in. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs