package org.libvirt.event; /** * Contains information about a life cycle change of a domain. *
* This includes the domain event that occurred together with * further details about that event. *
* Usage: *
{@code
* int onLifecycleChange(Domain dom, DomainEvent info) {
* switch (info.getType()) {
* case STARTED:
* StartedDetail detail = info.getDetail();
*
* switch (detail) {
* case BOOTED:
* ...
* break;
* ...
* }
* }
* }
* }}
* * Note, that a ClassCastException will be thrown at runtime when * assigning to the wrong detail enumeration type: *
{@code
* DomainEvent info;
*
* if (info.getType() == DomainEventType.STARTED) {
* // info.getDetails() returns a StartedDetail enum
* StoppedDetail detail = info.getDetail(); // throws ClassCastException
* }}
*
* @see LifecycleListener
* @since 1.5.2
*/
public final class DomainEvent {
private final DomainEventType type;
private final int detail;
public DomainEvent(final DomainEventType type, final int code) {
this.type = type;
this.detail = code;
}
/**
* Returns the type of event which occurred.
*/
public DomainEventType getType() {
return this.type;
}
/**
* Returns the corresponding domain event detail in regard to
* the DomainEventType of this instance.
*
* @return a constant of one of the enums implementing the
* {@link DomainEventDetail} interface
*/
public