[libvirt] [PATCH 1/2] Java bindings for domain events

Daniel P. Berrange berrange at redhat.com
Tue Nov 18 16:51:54 UTC 2008


On Tue, Nov 18, 2008 at 11:06:10AM -0500, David Lively wrote:
> The attached patch (against libvirt-java) implements Java bindings for
> libvirt domain events.  This version provides a libvirt EventImpl
> running in its own Java Thread, and provides per-Connect synchronization
> that makes using the bindings thread-safe.  (Note the Domain, Network,
> StoragePool, and StorageVol methods also synchronize on their Connect
> object, as required by libvirt.  I have similar changes for
> NodeDevice.java that need to be made when that code is checked in.)

I don't particularly like the event loop code because it is adding a huge 
pile of non-portable JNI code that won't work on Windows, which lacks
pipe() and poll(). Java already provides a portable pure Java API for 
building a poll() like event loop in form of NIO.

  http://www.xhaus.com/alan/python/jynio/select.html

The addition of the 'synchronized' annotatioons is something we need 
regardless of the rest of the patch, since our API contract dictates
that only a single thread is allowed to use a single virConnectPtr
at once.

> This version of the patch also implements and uses an enum class
> (DomainEvent.Type), as suggested by Tóth István.
> 
> IMPORTANT: THIS PATCH WILL BREAK THINGS UNLESS THE NEXT [PATCH 2/2] IS
> APPLIED TO libvirt FIRST.  Also, libvirt must be compiled WITH_PTHREADS
> for Java events to work.

Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list