On Sat, Nov 23, 2019 at 12:30:38AM +0200, Nir Soffer wrote: > On Fri, Nov 22, 2019 at 11:53 PM Nir Soffer <[email protected]> wrote: > > > > On Fri, Nov 22, 2019 at 11:35 PM Eric Blake <[email protected]> wrote: > > > > > > On 11/22/19 3:20 PM, Nir Soffer wrote: > > > > > > >>> +# There are several variants of the API. nbdkit will call this > > > >>> +# function first to determine which one you want to use. This is the > > > >>> +# latest version at the time this example was written. > > > >>> +def api_version(): > > > >>> + return 2 > > > >> > > > >> Matches the C counterpart of #define NBDKIT_API_VERSION 2 at the top of > > > >> a plugin. > > > > > > > > This is the same thing I was thinking about. This makes it more clear > > > > that the api > > > > version is constant, and not something the plugin should change while > > > > it is being used. > > > > > > Hmm - api_version() really is constant for the entire life of nbdkit. We > > > call it exactly once. Figuring out how to read a Python variable > > > instead of calling a function would be slightly more in line with the > > > fact that in C code it is a #define constant rather than a function > > > pointer callback. But it is that much more glue code to figure out how > > > to check for a python global variable, compared to the glue code we > > > already have for calling a python function. > > > > The extra glue code is (without error handling): > > > > PyObject *d = PyModule_GetDict(PyObject *module); > > PyObject *v = PyDict_GetItemString(d, "API_VERSION"); > > long api_version = PyLong_AsLong(v); > > Or simpler (with error handling): > > PyObject *v = PyObject_GetAttrString(m, "API_VERSION"); > if (v == NULL) > return 1; > > long value = PyLong_AsLong(v); > Py_DECREF(m); > > return value; > > On error -1 is returned and PyErr_Occurred() will return the exception type.
Thanks, I'll change this as suggested above. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://people.redhat.com/~rjones/virt-df/ _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
