[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC 2/8] golang/xenlight: Add error constants and standard handling
Create error type Errorxl for throwing proper xenlight errors. Update Ctx functions to throw Errorxl errors. Signed-off-by: Ronald Rojas <ronladred@xxxxxxxxx> --- tools/golang/xenlight/xenlight.go | 77 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 73 insertions(+), 4 deletions(-) diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go index 1f10e51..d58f8b8 100644 --- a/tools/golang/xenlight/xenlight.go +++ b/tools/golang/xenlight/xenlight.go @@ -32,6 +32,77 @@ import ( ) /* + * Errors + */ +type Errorxl int + +const ( + ErrorNonspecific = Errorxl(-C.ERROR_NONSPECIFIC) + ErrorVersion = Errorxl(-C.ERROR_VERSION) + ErrorFail = Errorxl(-C.ERROR_FAIL) + ErrorNi = Errorxl(-C.ERROR_NI) + ErrorNomem = Errorxl(-C.ERROR_NOMEM) + ErrorInval = Errorxl(-C.ERROR_INVAL) + ErrorBadfail = Errorxl(-C.ERROR_BADFAIL) + ErrorGuestTimedout = Errorxl(-C.ERROR_GUEST_TIMEDOUT) + ErrorTimedout = Errorxl(-C.ERROR_TIMEDOUT) + ErrorNoparavirt = Errorxl(-C.ERROR_NOPARAVIRT) + ErrorNotReady = Errorxl(-C.ERROR_NOT_READY) + ErrorOseventRegFail = Errorxl(-C.ERROR_OSEVENT_REG_FAIL) + ErrorBufferfull = Errorxl(-C.ERROR_BUFFERFULL) + ErrorUnknownChild = Errorxl(-C.ERROR_UNKNOWN_CHILD) + ErrorLockFail = Errorxl(-C.ERROR_LOCK_FAIL) + ErrorJsonConfigEmpty = Errorxl(-C.ERROR_JSON_CONFIG_EMPTY) + ErrorDeviceExists = Errorxl(-C.ERROR_DEVICE_EXISTS) + ErrorCheckpointDevopsDoesNotMatch = Errorxl(-C.ERROR_CHECKPOINT_DEVOPS_DOES_NOT_MATCH) + ErrorCheckpointDeviceNotSupported = Errorxl(-C.ERROR_CHECKPOINT_DEVICE_NOT_SUPPORTED) + ErrorVnumaConfigInvalid = Errorxl(-C.ERROR_VNUMA_CONFIG_INVALID) + ErrorDomainNotfound = Errorxl(-C.ERROR_DOMAIN_NOTFOUND) + ErrorAborted = Errorxl(-C.ERROR_ABORTED) + ErrorNotfound = Errorxl(-C.ERROR_NOTFOUND) + ErrorDomainDestroyed = Errorxl(-C.ERROR_DOMAIN_DESTROYED) + ErrorFeatureRemoved = Errorxl(-C.ERROR_FEATURE_REMOVED) +) + +var errors = [...]string{ + ErrorNonspecific: "Non-specific error", + ErrorVersion: "Wrong version", + ErrorFail: "Failed", + ErrorNi: "Null", + ErrorNomem: "No memory", + ErrorInval: "Invalid", + ErrorBadfail: "Bad Fail", + ErrorGuestTimedout: "Guest timed out", + ErrorTimedout: "Timed out", + ErrorNoparavirt: "No Paravirtualization", + ErrorNotReady: "Not ready", + ErrorOseventRegFail: "OS event failed", + ErrorBufferfull: "Buffer full", + ErrorUnknownChild: "Unknown child", + ErrorLockFail: "Lock failed", + ErrorJsonConfigEmpty: "JSON config empyt", + ErrorDeviceExists: "Device exists", + ErrorCheckpointDevopsDoesNotMatch: "Checkpoint devops does not match", + ErrorCheckpointDeviceNotSupported: "Checkpoint device not supported", + ErrorVnumaConfigInvalid: "VNUMA config invalid", + ErrorDomainNotfound: "Domain not found", + ErrorAborted: "Aborted", + ErrorNotfound: "Not found", + ErrorDomainDestroyed: "Domain destroyed", + ErrorFeatureRemoved: "Feature removed", +} + +func (e Errorxl) Error() string { + if 0 <= -int(e) && -int(e) < len(errors) { + s := errors[-e] + if s != "" { + return s + } + } + return "errorxl " + strconv.Itoa(int(e)) +} + +/* * Types: Builtins */ type Context struct { @@ -55,8 +126,7 @@ func (Ctx *Context) Open() (err error) { ret := C.libxl_ctx_alloc(unsafe.Pointer(&Ctx.ctx), C.LIBXL_VERSION, 0, nil) if ret != 0 { - //FIXME: proper error - err = createError("Allocating libxl context: ", ret) + err = Errorxl(ret) } return } @@ -66,8 +136,7 @@ func (Ctx *Context) Close() (err error) { Ctx.ctx = nil if ret != 0 { - //FIXME: proper error - err = createError("Freeing libxl context: ", ret) + err = Errorxl(ret) } return } -- 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |