Home | History | Annotate | Download | only in qemu
      1 /*
      2  * QError header file.
      3  *
      4  * Copyright (C) 2009 Red Hat Inc.
      5  *
      6  * Authors:
      7  *  Luiz Capitulino <lcapitulino (at) redhat.com>
      8  *
      9  * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
     10  * See the COPYING.LIB file in the top-level directory.
     11  */
     12 #ifndef QERROR_H
     13 #define QERROR_H
     14 
     15 #include "qdict.h"
     16 #include "qstring.h"
     17 #include <stdarg.h>
     18 
     19 typedef struct QErrorStringTable {
     20     const char *desc;
     21     const char *error_fmt;
     22 } QErrorStringTable;
     23 
     24 typedef struct QError {
     25     QObject_HEAD;
     26     QDict *error;
     27     int linenr;
     28     const char *file;
     29     const char *func;
     30     const QErrorStringTable *entry;
     31 } QError;
     32 
     33 QError *qerror_new(void);
     34 QError *qerror_from_info(const char *file, int linenr, const char *func,
     35                          const char *fmt, va_list *va);
     36 QString *qerror_human(const QError *qerror);
     37 void qerror_print(const QError *qerror);
     38 QError *qobject_to_qerror(const QObject *obj);
     39 
     40 /*
     41  * QError class list
     42  */
     43 #define QERR_COMMAND_NOT_FOUND \
     44     "{ 'class': 'CommandNotFound', 'data': { 'name': %s } }"
     45 
     46 #define QERR_DEVICE_ENCRYPTED \
     47     "{ 'class': 'DeviceEncrypted', 'data': { 'device': %s } }"
     48 
     49 #define QERR_DEVICE_LOCKED                                      \
     50     "{ 'class': 'DeviceLocked', 'data': { 'device': %s } }"
     51 
     52 #define QERR_DEVICE_NOT_ACTIVE \
     53     "{ 'class': 'DeviceNotActive', 'data': { 'device': %s } }"
     54 
     55 #define QERR_DEVICE_NOT_FOUND \
     56     "{ 'class': 'DeviceNotFound', 'data': { 'device': %s } }"
     57 
     58 #define QERR_DEVICE_NOT_REMOVABLE \
     59     "{ 'class': 'DeviceNotRemovable', 'data': { 'device': %s } }"
     60 
     61 #define QERR_FD_NOT_FOUND \
     62     "{ 'class': 'FdNotFound', 'data': { 'name': %s } }"
     63 
     64 #define QERR_FD_NOT_SUPPLIED \
     65     "{ 'class': 'FdNotSupplied', 'data': {} }"
     66 
     67 #define QERR_OPEN_FILE_FAILED \
     68     "{ 'class': 'OpenFileFailed', 'data': { 'filename': %s } }"
     69 
     70 #define QERR_INVALID_BLOCK_FORMAT \
     71     "{ 'class': 'InvalidBlockFormat', 'data': { 'name': %s } }"
     72 
     73 #define QERR_INVALID_PARAMETER \
     74     "{ 'class': 'InvalidParameter', 'data': { 'name': %s } }"
     75 
     76 #define QERR_INVALID_PARAMETER_TYPE \
     77     "{ 'class': 'InvalidParameterType', 'data': { 'name': %s,'expected': %s } }"
     78 
     79 #define QERR_INVALID_PASSWORD \
     80     "{ 'class': 'InvalidPassword', 'data': {} }"
     81 
     82 #define QERR_JSON_PARSING \
     83     "{ 'class': 'JSONParsing', 'data': {} }"
     84 
     85 #define QERR_KVM_MISSING_CAP \
     86     "{ 'class': 'KVMMissingCap', 'data': { 'capability': %s, 'feature': %s } }"
     87 
     88 #define QERR_MISSING_PARAMETER \
     89     "{ 'class': 'MissingParameter', 'data': { 'name': %s } }"
     90 
     91 #define QERR_QMP_BAD_INPUT_OBJECT \
     92     "{ 'class': 'QMPBadInputObject', 'data': { 'expected': %s } }"
     93 
     94 #define QERR_SET_PASSWD_FAILED \
     95     "{ 'class': 'SetPasswdFailed', 'data': {} }"
     96 
     97 #define QERR_UNDEFINED_ERROR \
     98     "{ 'class': 'UndefinedError', 'data': {} }"
     99 
    100 #define QERR_TOO_MANY_FILES \
    101     "{ 'class': 'TooManyFiles', 'data': {} }"
    102 
    103 #define QERR_VNC_SERVER_FAILED \
    104     "{ 'class': 'VNCServerFailed', 'data': { 'target': %s } }"
    105 
    106 #endif /* QERROR_H */
    107