[Libguestfs] Libguestfs gobject bindings
Daniel P. Berrange
berrange at redhat.com
Fri Jan 13 13:18:43 UTC 2012
On Fri, Jan 13, 2012 at 12:50:30PM +0000, Richard W.M. Jones wrote:
> On Fri, Jan 13, 2012 at 12:28:50PM +0000, Daniel P. Berrange wrote:
> > GIO provides all the infrastructure you need to do this, via the
> > GSimpleAsyncResult object, and its g_simple_async_result_run_in_thread
> > method.
>
> So it does; we could use that. Might want to only offer this for
> functions that are truly long-running. I doubt anyone will be happy
> with launching threads to handle guestfs_set_verbose et al.
>
> We could flag long-running functions. cf. 'Progress' flag in
> generator/generator_actions.ml -- which brings me on to the subject of
> if we need to do anything special for long-running functions that
> generate progress messages?
I'd be inclined to define a GObject interface GuestfsProgress *
with 3 virtual methods:
void (*progress_start)(GuestfsProgress *prog);
void (*progress_tick)(GuestfsProgress *prog, gfloat *percent);
void (*progress_finish)(GuestfsProgress *prog);
Applications wishing to have progress info would create
an implementation of this interface.
Then, either GuestfsSession would want a global method like
guestfs_session_set_progress(GuestfsSession *s, GuestfsProgress *prog);
Or, you could make each individual long running API, would
accept an optional GuestfsProgress *prog parameter.
The latter is probably better if we consider that with
async methods, you might invoke several methods in a
row & want to handle progress separately for each on
their own.
> And second question: event API? error handling in the GObject API
> (does GObject have any concept of exceptions)?
Events will want to be turned into GObject signals I presume.
At the C level every API that can fail has a GError ** argument.
This gets translated to whatever error mechanism a language
has, usually exceptions.
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the Libguestfs
mailing list