[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 25/40] qapi: Add alias for ErrorClass
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PULL 25/40] qapi: Add alias for ErrorClass |
Date: |
Thu, 17 Dec 2015 09:33:30 +0100 |
From: Eric Blake <address@hidden>
The qapi enum ErrorClass is unusual that it uses 'CamelCase' names,
contrary to our documented convention of preferring 'lower-case'.
However, this enum is entrenched in the API; we cannot change
what strings QMP outputs. Meanwhile, we want to simplify how
c_enum_const() is used to generate enum constants, by moving away
from the heuristics of camel_to_upper() to a more straightforward
c_name(N).upper() - but doing so will rename all of the ErrorClass
constants and cause churn to all client files, where the new names
are aesthetically less pleasing (ERROR_CLASS_DEVICENOTFOUND looks
like we can't make up our minds on whether to break between words).
So as always in computer science, solve the problem by some more
indirection: rename the qapi type to QapiErrorClass, and add a
new enum ErrorClass in error.h whose members are aliases of the
qapi type, but with the spelling expected elsewhere in the tree.
Then, when c_enum_const() changes the munging, we only have to
adjust the one alias spot.
Suggested by: Markus Armbruster <address@hidden>
Signed-off-by: Eric Blake <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Markus Armbruster <address@hidden>
---
include/qapi/error.h | 14 ++++++++++++++
monitor.c | 2 +-
qapi/common.json | 5 +++--
qapi/qmp-dispatch.c | 2 +-
4 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/include/qapi/error.h b/include/qapi/error.h
index 4d42cdc..3060b0c 100644
--- a/include/qapi/error.h
+++ b/include/qapi/error.h
@@ -91,6 +91,20 @@
typedef struct Error Error;
/*
+ * Overall category of an error.
+ * Based on the qapi type QapiErrorClass, but reproduced here for nicer
+ * enum names.
+ */
+typedef enum ErrorClass {
+ ERROR_CLASS_GENERIC_ERROR = QAPI_ERROR_CLASS_GENERIC_ERROR,
+ ERROR_CLASS_COMMAND_NOT_FOUND = QAPI_ERROR_CLASS_COMMAND_NOT_FOUND,
+ ERROR_CLASS_DEVICE_ENCRYPTED = QAPI_ERROR_CLASS_DEVICE_ENCRYPTED,
+ ERROR_CLASS_DEVICE_NOT_ACTIVE = QAPI_ERROR_CLASS_DEVICE_NOT_ACTIVE,
+ ERROR_CLASS_DEVICE_NOT_FOUND = QAPI_ERROR_CLASS_DEVICE_NOT_FOUND,
+ ERROR_CLASS_KVM_MISSING_CAP = QAPI_ERROR_CLASS_KVM_MISSING_CAP,
+} ErrorClass;
+
+/*
* Get @err's human-readable error message.
*/
const char *error_get_pretty(Error *err);
diff --git a/monitor.c b/monitor.c
index 5546f8a..289c118 100644
--- a/monitor.c
+++ b/monitor.c
@@ -403,7 +403,7 @@ static QDict *build_qmp_error_dict(Error *err)
QObject *obj;
obj = qobject_from_jsonf("{ 'error': { 'class': %s, 'desc': %s } }",
- ErrorClass_lookup[error_get_class(err)],
+ QapiErrorClass_lookup[error_get_class(err)],
error_get_pretty(err));
return qobject_to_qdict(obj);
diff --git a/qapi/common.json b/qapi/common.json
index bad56bf..6fb40e7 100644
--- a/qapi/common.json
+++ b/qapi/common.json
@@ -3,7 +3,7 @@
# QAPI common definitions
##
-# @ErrorClass
+# @QapiErrorClass
#
# QEMU error classes
#
@@ -24,7 +24,8 @@
#
# Since: 1.2
##
-{ 'enum': 'ErrorClass',
+{ 'enum': 'QapiErrorClass',
+ # Keep this in sync with ErrorClass in error.h
'data': [ 'GenericError', 'CommandNotFound', 'DeviceEncrypted',
'DeviceNotActive', 'DeviceNotFound', 'KVMMissingCap' ] }
diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c
index 7bcc860..f36933d 100644
--- a/qapi/qmp-dispatch.c
+++ b/qapi/qmp-dispatch.c
@@ -114,7 +114,7 @@ static QObject *do_qmp_dispatch(QObject *request, Error
**errp)
QObject *qmp_build_error_object(Error *err)
{
return qobject_from_jsonf("{ 'class': %s, 'desc': %s }",
- ErrorClass_lookup[error_get_class(err)],
+ QapiErrorClass_lookup[error_get_class(err)],
error_get_pretty(err));
}
--
2.4.3
- [Qemu-devel] [PULL 06/40] qapi: Clean up after previous commit, (continued)
- [Qemu-devel] [PULL 06/40] qapi: Clean up after previous commit, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 10/40] qapi: Simplify QAPISchemaObjectTypeVariants.check(), Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 04/40] qapi: Drop obsolete tag value collision assertions, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 03/40] qapi-types: Simplify gen_struct_field[s], Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 12/40] qapi: Factor out QAPISchemaObjectType.check_clash(), Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 01/40] qapi: Track simple union tag in object.local_members, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 17/40] qapi: Fix c_name() munging, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 19/40] blkdebug: Merge hand-rolled and qapi BlkdebugEvent enum, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 18/40] qapi: Remove dead visitor code, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 24/40] cpu: Convert CpuInfo into flat union, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 25/40] qapi: Add alias for ErrorClass,
Markus Armbruster <=
- [Qemu-devel] [PULL 32/40] qapi: Inline _make_implicit_tag(), Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 14/40] qapi: Remove outdated tests related to QMP/branch collisions, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 08/40] qapi: Eliminate QAPISchemaObjectType.check() variable members, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 13/40] qapi: Hoist tag collision check to Variants.check(), Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 21/40] qapi: Tighten the regex on valid names, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 23/40] qapi: Remove obsolete tests for MAX collision, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 31/40] qapi-types: Drop unnedeed ._fwdefn, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 11/40] qapi: Check for QAPI collisions involving variant members, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 20/40] blkdebug: Avoid '.' in enum values, Markus Armbruster, 2015/12/17
- [Qemu-devel] [PULL 16/40] qapi: Detect collisions in C member names, Markus Armbruster, 2015/12/17