diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in --- a/include/libvirt/libvirt.h.in +++ b/include/libvirt/libvirt.h.in @@ -131,6 +131,65 @@ struct _virNodeInfo { }; +/* + * Asynchronous background jobs + */ + +/** + * virJobType; + * + * A job may have a finite bounded progress, or may be + * unbounded. + */ +typedef enum { + VIR_JOB_BOUNDED= 0, /* finite, 0-> 100 completion */ + VIR_JOB_UNBOUNDED= 1, /* unknown completion percent */ +} virJobType; + + +/** + * virJobState; + * + * A job may be in one of several states + */ +typedef enum { + VIR_JOB_RUNNING = 0, /* Still active */ + VIR_JOB_COMPLETE = 1, /* Completed successfully */ + VIR_JOB_FAILED = 2, /* Failed to complete see virJobGetError */ + VIR_JOB_CANCELLED = 3, /* User requested cancellation */ +} virJobState; + +/** + * virJobInfoPtr: + * + * a virJobInfo is a structure filled by virJobGetInfo() and extracting + * runtime informations for a given active Job + */ + +typedef struct _virJobInfo virJobInfo; + +struct _virJobInfo { + int type; /* One of virJobType constants */ + int state; /* One of virJobState constants */ + unsigned int elapsedTime; /* Actual running time in seconds */ + unsigned int remainingTime;/* Estimated remaining time in seconds */ + + unsigned long long elapsedData; /* Total processed data so far */ + unsigned long long remainingData; /* Estimated remaining data to process */ + unsigned long long totalData; /* Total data to be processed for job */ + + int percentComplete; /* Completion progress 0 -> 100, if VIR_JOB_BOUNDED */ +}; + +/** + * virJobInfoPtr: + * + * a virJobInfoPtr is a pointer to a virJobInfo structure. + */ + +typedef virJobInfo *virJobInfoPtr; + + /** * virDomainSchedParameterType: * @@ -455,6 +514,10 @@ int virDomainDestroy int virDomainDestroy (virDomainPtr domain); int virDomainFree (virDomainPtr domain); +int virDomainGetJobInfo (virDomainPtr dom, + virJobInfoPtr info); +int virDomainCancelJob (virDomainPtr dom); + /* * Domain suspend/resume */ @@ -466,8 +529,14 @@ int virDomainResume */ int virDomainSave (virDomainPtr domain, const char *to); +int virDomainSaveFlags (virDomainPtr domain, + const char *to, + unsigned int flags); int virDomainRestore (virConnectPtr conn, const char *from); +int virDomainRestoreFlags (virConnectPtr conn, + const char *from, + unsigned int flags); /* * Domain core dump @@ -559,6 +628,8 @@ int virConnectListDe char **const names, int maxnames); int virDomainCreate (virDomainPtr domain); +int virDomainCreateFlags (virDomainPtr domain, + unsigned int flags); int virDomainGetAutostart (virDomainPtr domain, int *autostart); @@ -929,6 +1000,10 @@ int virStoragePoolRe int virStoragePoolRefresh (virStoragePoolPtr pool, unsigned int flags); +int virStoragePoolGetJobInfo (virStoragePoolPtr pool, + virJobInfoPtr info); +int virStoragePoolCancelJob (virStoragePoolPtr pool); + /* * StoragePool information */ @@ -986,6 +1061,10 @@ char * virStorageVolGet unsigned int flags); char * virStorageVolGetPath (virStorageVolPtr vol); + +int virStorageVolGetJobInfo (virStoragePoolPtr pool, + virJobInfoPtr info); +int virStorageVolCancelJob (virStoragePoolPtr pool); /* * Deprecated calls @@ -1295,6 +1374,18 @@ void virEventRegisterImpl(virEventAddHan virEventAddTimeoutFunc addTimeout, virEventUpdateTimeoutFunc updateTimeout, virEventRemoveTimeoutFunc removeTimeout); + + +typedef struct _virJob virJob; +typedef virJob *virJobPtr; + + +virJobPtr virConnectGetJob(virConnectPtr conn); +virJobPtr virDomainGetJob(virDomainPtr dom); + +int virJobCancel(virJobPtr job); + + #ifdef __cplusplus } #endif