On Tue, Oct 16, 2007 at 02:13:04PM +0100, Richard W.M. Jones wrote: > This patch is a little bit esoteric, but I need it for something I'm > working on at the moment. > > At the moment the code in xend_internal.c: xend_parse_sexp_desc parses > the domain sexpr directly into XML. This makes it rather hard to just > get a list of block devices without repeating the same code. So here > I've factored out the common code for parsing block devices into a > separate function and callback. You really need a callback ? This makes code harder to understand > + /* Call the callback function. */ > + ret = fn (conn, data, isBlock, cdrom, isNoSrcCdrom, > + drvName, drvType, src, dst, mode); This adds flexibility but is a bit convoluted, what do you need this for ? > There are a couple of small changes that you should be aware of: (1) The > <devices> list may be returned in a different order (specifically, block > devices are always returned first). (2) We iterate over the root nodes > of the sexpr twice (once for block devices, once for vifs and vfbs). > But the sexpr is small and in-memory so this shouldn't be a problem > compared to having to do the HTTP request to xend to get it in the first > place. Having disks presented first in the resulting XML is a bit cleaner IMHO and I don't think the double scan of teh sexpr is a big deal, really. I'm more wondering about what you need to achieve that really needs a callback based interface. Daniel -- Red Hat Virtualization group http://redhat.com/virtualization/ Daniel Veillard | virtualization library http://libvirt.org/ veillard@xxxxxxxxxx | libxml GNOME XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/ -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list