Re: [libvirt] [libvirt-java] [PATCH 45/65] events: handle registration of domain lifecycle events
On Thu, Feb 13, 2014 at 04:22:53PM +0100, Claudio Bley wrote: Add LifecycleListener interface which needs to be implemented when the user wishes to receive lifecycle change events on domains. The DomainEvent class represents the kind of event that occurred including details on that event. Signed-off-by: Claudio Bley cb...@av-test.de --- src/main/java/org/libvirt/Connect.java | 66 ++ src/main/java/org/libvirt/Domain.java | 18 + src/main/java/org/libvirt/event/CrashedDetail.java | 15 + src/main/java/org/libvirt/event/DefinedDetail.java | 17 + src/main/java/org/libvirt/event/DetailInfo.java|5 ++ src/main/java/org/libvirt/event/DomainEvent.java | 71 .../java/org/libvirt/event/DomainEventDetail.java |7 ++ .../java/org/libvirt/event/DomainEventType.java| 60 + .../java/org/libvirt/event/LifecycleListener.java | 24 +++ .../java/org/libvirt/event/PMSuspendedDetail.java | 15 + src/main/java/org/libvirt/event/ResumedDetail.java | 20 ++ .../java/org/libvirt/event/ShutdownDetail.java | 12 src/main/java/org/libvirt/event/StartedDetail.java | 30 + src/main/java/org/libvirt/event/StoppedDetail.java | 40 +++ .../java/org/libvirt/event/SuspendedDetail.java| 40 +++ .../java/org/libvirt/event/UndefinedDetail.java|7 ++ src/main/java/org/libvirt/jna/Libvirt.java |7 ++ 17 files changed, 454 insertions(+) create mode 100644 src/main/java/org/libvirt/event/CrashedDetail.java create mode 100644 src/main/java/org/libvirt/event/DefinedDetail.java create mode 100644 src/main/java/org/libvirt/event/DetailInfo.java create mode 100644 src/main/java/org/libvirt/event/DomainEvent.java create mode 100644 src/main/java/org/libvirt/event/DomainEventDetail.java create mode 100644 src/main/java/org/libvirt/event/DomainEventType.java create mode 100644 src/main/java/org/libvirt/event/LifecycleListener.java create mode 100644 src/main/java/org/libvirt/event/PMSuspendedDetail.java create mode 100644 src/main/java/org/libvirt/event/ResumedDetail.java create mode 100644 src/main/java/org/libvirt/event/ShutdownDetail.java create mode 100644 src/main/java/org/libvirt/event/StartedDetail.java create mode 100644 src/main/java/org/libvirt/event/StoppedDetail.java create mode 100644 src/main/java/org/libvirt/event/SuspendedDetail.java create mode 100644 src/main/java/org/libvirt/event/UndefinedDetail.java ACK Regards, 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 :| -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [libvirt-java] [PATCH 45/65] events: handle registration of domain lifecycle events
At Fri, 21 Feb 2014 11:10:22 +, Daniel P. Berrange wrote: On Thu, Feb 13, 2014 at 04:22:53PM +0100, Claudio Bley wrote: Add LifecycleListener interface which needs to be implemented when the user wishes to receive lifecycle change events on domains. The DomainEvent class represents the kind of event that occurred including details on that event. Signed-off-by: Claudio Bley cb...@av-test.de --- src/main/java/org/libvirt/Connect.java | 66 ++ src/main/java/org/libvirt/Domain.java | 18 + src/main/java/org/libvirt/event/CrashedDetail.java | 15 + src/main/java/org/libvirt/event/DefinedDetail.java | 17 + src/main/java/org/libvirt/event/DetailInfo.java|5 ++ src/main/java/org/libvirt/event/DomainEvent.java | 71 .../java/org/libvirt/event/DomainEventDetail.java |7 ++ .../java/org/libvirt/event/DomainEventType.java| 60 + .../java/org/libvirt/event/LifecycleListener.java | 24 +++ .../java/org/libvirt/event/PMSuspendedDetail.java | 15 + src/main/java/org/libvirt/event/ResumedDetail.java | 20 ++ .../java/org/libvirt/event/ShutdownDetail.java | 12 src/main/java/org/libvirt/event/StartedDetail.java | 30 + src/main/java/org/libvirt/event/StoppedDetail.java | 40 +++ .../java/org/libvirt/event/SuspendedDetail.java| 40 +++ .../java/org/libvirt/event/UndefinedDetail.java|7 ++ src/main/java/org/libvirt/jna/Libvirt.java |7 ++ 17 files changed, 454 insertions(+) create mode 100644 src/main/java/org/libvirt/event/CrashedDetail.java create mode 100644 src/main/java/org/libvirt/event/DefinedDetail.java create mode 100644 src/main/java/org/libvirt/event/DetailInfo.java create mode 100644 src/main/java/org/libvirt/event/DomainEvent.java create mode 100644 src/main/java/org/libvirt/event/DomainEventDetail.java create mode 100644 src/main/java/org/libvirt/event/DomainEventType.java create mode 100644 src/main/java/org/libvirt/event/LifecycleListener.java create mode 100644 src/main/java/org/libvirt/event/PMSuspendedDetail.java create mode 100644 src/main/java/org/libvirt/event/ResumedDetail.java create mode 100644 src/main/java/org/libvirt/event/ShutdownDetail.java create mode 100644 src/main/java/org/libvirt/event/StartedDetail.java create mode 100644 src/main/java/org/libvirt/event/StoppedDetail.java create mode 100644 src/main/java/org/libvirt/event/SuspendedDetail.java create mode 100644 src/main/java/org/libvirt/event/UndefinedDetail.java ACK Thanks. I just noticed one minor thing: diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index bbbd000..d82dba2 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java +/** + * Adds the specified listener to receive lifecycle events for + * domains of this connections. s/connections/connection I'll fix that typo before pushing. Claudio -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [libvirt-java] [PATCH 45/65] events: handle registration of domain lifecycle events
Add LifecycleListener interface which needs to be implemented when the user wishes to receive lifecycle change events on domains. The DomainEvent class represents the kind of event that occurred including details on that event. Signed-off-by: Claudio Bley cb...@av-test.de --- src/main/java/org/libvirt/Connect.java | 66 ++ src/main/java/org/libvirt/Domain.java | 18 + src/main/java/org/libvirt/event/CrashedDetail.java | 15 + src/main/java/org/libvirt/event/DefinedDetail.java | 17 + src/main/java/org/libvirt/event/DetailInfo.java|5 ++ src/main/java/org/libvirt/event/DomainEvent.java | 71 .../java/org/libvirt/event/DomainEventDetail.java |7 ++ .../java/org/libvirt/event/DomainEventType.java| 60 + .../java/org/libvirt/event/LifecycleListener.java | 24 +++ .../java/org/libvirt/event/PMSuspendedDetail.java | 15 + src/main/java/org/libvirt/event/ResumedDetail.java | 20 ++ .../java/org/libvirt/event/ShutdownDetail.java | 12 src/main/java/org/libvirt/event/StartedDetail.java | 30 + src/main/java/org/libvirt/event/StoppedDetail.java | 40 +++ .../java/org/libvirt/event/SuspendedDetail.java| 40 +++ .../java/org/libvirt/event/UndefinedDetail.java|7 ++ src/main/java/org/libvirt/jna/Libvirt.java |7 ++ 17 files changed, 454 insertions(+) create mode 100644 src/main/java/org/libvirt/event/CrashedDetail.java create mode 100644 src/main/java/org/libvirt/event/DefinedDetail.java create mode 100644 src/main/java/org/libvirt/event/DetailInfo.java create mode 100644 src/main/java/org/libvirt/event/DomainEvent.java create mode 100644 src/main/java/org/libvirt/event/DomainEventDetail.java create mode 100644 src/main/java/org/libvirt/event/DomainEventType.java create mode 100644 src/main/java/org/libvirt/event/LifecycleListener.java create mode 100644 src/main/java/org/libvirt/event/PMSuspendedDetail.java create mode 100644 src/main/java/org/libvirt/event/ResumedDetail.java create mode 100644 src/main/java/org/libvirt/event/ShutdownDetail.java create mode 100644 src/main/java/org/libvirt/event/StartedDetail.java create mode 100644 src/main/java/org/libvirt/event/StoppedDetail.java create mode 100644 src/main/java/org/libvirt/event/SuspendedDetail.java create mode 100644 src/main/java/org/libvirt/event/UndefinedDetail.java diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index bbbd000..d82dba2 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -479,6 +479,72 @@ public class Connect { domainEventRegister(domain, DomainEventID.REBOOT, virCB, cb); } +void domainEventRegister(Domain domain, final LifecycleListener cb) throws LibvirtException { +if (cb == null) +throw new IllegalArgumentException(LifecycleCallback cannot be null); + +Libvirt.VirConnectDomainEventCallback virCB = new Libvirt.VirConnectDomainEventCallback() { +@Override +public int eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, + final int eventCode, + final int detailCode, + Pointer opaque) { +assert VCP.equals(virConnectPtr); + +try { +Domain dom = Domain.constructIncRef(Connect.this, virDomainPointer); +DomainEventType type = getConstant(DomainEventType.class, eventCode); +DomainEvent event = new DomainEvent(type, detailCode); + +cb.onLifecycleChange(dom, event); +} catch (LibvirtException e) { +throw new RuntimeException(libvirt error in lifecycle callback, e); +} + +// always return 0, regardless of what the +// callback method returned. This may need to be +// changed in the future, in case the return value +// is used for something by libvirt. +return 0; +} +}; + +domainEventRegister(domain, DomainEventID.LIFECYCLE, virCB, cb); +} + +/** + * Adds the specified listener to receive lifecycle events for + * domains of this connections. + * + * @param l the lifecycle listener + * @throwsLibvirtException on failure + * + * @see #removeLifecycleListener + * @see Domain#addLifecycleListener + * @see a + * href=http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventRegisterAny; + * virConnectDomainEventRegisterAny/a + */ +public void addLifecycleListener(final LifecycleListener l) throws