1/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
2
3/*
4 * Schema-defined QAPI/QMP events
5 *
6 * Copyright (c) 2014 Wenchao Xia
7 * Copyright (c) 2015-2018 Red Hat Inc.
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
13#include "qemu/osdep.h"
14#include "qapi-emit-events.h"
15#include "qapi-events-block-core.h"
16#include "qapi-visit-block-core.h"
17#include "qapi/error.h"
18#include "qapi/qmp/qdict.h"
19#include "qapi/qobject-output-visitor.h"
20#include "qapi/qmp-event.h"
21
22
23void qapi_event_send_block_image_corrupted(const char *device, bool has_node_name, const char *node_name, const char *msg, bool has_offset, int64_t offset, bool has_size, int64_t size, bool fatal)
24{
25 QDict *qmp;
26 QObject *obj;
27 Visitor *v;
28 q_obj_BLOCK_IMAGE_CORRUPTED_arg param = {
29 (char *)device, has_node_name, (char *)node_name, (char *)msg, has_offset, offset, has_size, size, fatal
30 };
31
32 qmp = qmp_event_build_dict("BLOCK_IMAGE_CORRUPTED");
33
34 v = qobject_output_visitor_new(&obj);
35
36 visit_start_struct(v, "BLOCK_IMAGE_CORRUPTED", NULL, 0, &error_abort);
37 visit_type_q_obj_BLOCK_IMAGE_CORRUPTED_arg_members(v, &param, &error_abort);
38 visit_check_struct(v, &error_abort);
39 visit_end_struct(v, NULL);
40
41 visit_complete(v, &obj);
42 qdict_put_obj(qmp, "data", obj);
43 qapi_event_emit(QAPI_EVENT_BLOCK_IMAGE_CORRUPTED, qmp);
44
45 visit_free(v);
46 qobject_unref(qmp);
47}
48
49void qapi_event_send_block_io_error(const char *device, bool has_node_name, const char *node_name, IoOperationType operation, BlockErrorAction action, bool has_nospace, bool nospace, const char *reason)
50{
51 QDict *qmp;
52 QObject *obj;
53 Visitor *v;
54 q_obj_BLOCK_IO_ERROR_arg param = {
55 (char *)device, has_node_name, (char *)node_name, operation, action, has_nospace, nospace, (char *)reason
56 };
57
58 qmp = qmp_event_build_dict("BLOCK_IO_ERROR");
59
60 v = qobject_output_visitor_new(&obj);
61
62 visit_start_struct(v, "BLOCK_IO_ERROR", NULL, 0, &error_abort);
63 visit_type_q_obj_BLOCK_IO_ERROR_arg_members(v, &param, &error_abort);
64 visit_check_struct(v, &error_abort);
65 visit_end_struct(v, NULL);
66
67 visit_complete(v, &obj);
68 qdict_put_obj(qmp, "data", obj);
69 qapi_event_emit(QAPI_EVENT_BLOCK_IO_ERROR, qmp);
70
71 visit_free(v);
72 qobject_unref(qmp);
73}
74
75void qapi_event_send_block_job_completed(JobType type, const char *device, int64_t len, int64_t offset, int64_t speed, bool has_error, const char *error)
76{
77 QDict *qmp;
78 QObject *obj;
79 Visitor *v;
80 q_obj_BLOCK_JOB_COMPLETED_arg param = {
81 type, (char *)device, len, offset, speed, has_error, (char *)error
82 };
83
84 qmp = qmp_event_build_dict("BLOCK_JOB_COMPLETED");
85
86 v = qobject_output_visitor_new(&obj);
87
88 visit_start_struct(v, "BLOCK_JOB_COMPLETED", NULL, 0, &error_abort);
89 visit_type_q_obj_BLOCK_JOB_COMPLETED_arg_members(v, &param, &error_abort);
90 visit_check_struct(v, &error_abort);
91 visit_end_struct(v, NULL);
92
93 visit_complete(v, &obj);
94 qdict_put_obj(qmp, "data", obj);
95 qapi_event_emit(QAPI_EVENT_BLOCK_JOB_COMPLETED, qmp);
96
97 visit_free(v);
98 qobject_unref(qmp);
99}
100
101void qapi_event_send_block_job_cancelled(JobType type, const char *device, int64_t len, int64_t offset, int64_t speed)
102{
103 QDict *qmp;
104 QObject *obj;
105 Visitor *v;
106 q_obj_BLOCK_JOB_CANCELLED_arg param = {
107 type, (char *)device, len, offset, speed
108 };
109
110 qmp = qmp_event_build_dict("BLOCK_JOB_CANCELLED");
111
112 v = qobject_output_visitor_new(&obj);
113
114 visit_start_struct(v, "BLOCK_JOB_CANCELLED", NULL, 0, &error_abort);
115 visit_type_q_obj_BLOCK_JOB_CANCELLED_arg_members(v, &param, &error_abort);
116 visit_check_struct(v, &error_abort);
117 visit_end_struct(v, NULL);
118
119 visit_complete(v, &obj);
120 qdict_put_obj(qmp, "data", obj);
121 qapi_event_emit(QAPI_EVENT_BLOCK_JOB_CANCELLED, qmp);
122
123 visit_free(v);
124 qobject_unref(qmp);
125}
126
127void qapi_event_send_block_job_error(const char *device, IoOperationType operation, BlockErrorAction action)
128{
129 QDict *qmp;
130 QObject *obj;
131 Visitor *v;
132 q_obj_BLOCK_JOB_ERROR_arg param = {
133 (char *)device, operation, action
134 };
135
136 qmp = qmp_event_build_dict("BLOCK_JOB_ERROR");
137
138 v = qobject_output_visitor_new(&obj);
139
140 visit_start_struct(v, "BLOCK_JOB_ERROR", NULL, 0, &error_abort);
141 visit_type_q_obj_BLOCK_JOB_ERROR_arg_members(v, &param, &error_abort);
142 visit_check_struct(v, &error_abort);
143 visit_end_struct(v, NULL);
144
145 visit_complete(v, &obj);
146 qdict_put_obj(qmp, "data", obj);
147 qapi_event_emit(QAPI_EVENT_BLOCK_JOB_ERROR, qmp);
148
149 visit_free(v);
150 qobject_unref(qmp);
151}
152
153void qapi_event_send_block_job_ready(JobType type, const char *device, int64_t len, int64_t offset, int64_t speed)
154{
155 QDict *qmp;
156 QObject *obj;
157 Visitor *v;
158 q_obj_BLOCK_JOB_READY_arg param = {
159 type, (char *)device, len, offset, speed
160 };
161
162 qmp = qmp_event_build_dict("BLOCK_JOB_READY");
163
164 v = qobject_output_visitor_new(&obj);
165
166 visit_start_struct(v, "BLOCK_JOB_READY", NULL, 0, &error_abort);
167 visit_type_q_obj_BLOCK_JOB_READY_arg_members(v, &param, &error_abort);
168 visit_check_struct(v, &error_abort);
169 visit_end_struct(v, NULL);
170
171 visit_complete(v, &obj);
172 qdict_put_obj(qmp, "data", obj);
173 qapi_event_emit(QAPI_EVENT_BLOCK_JOB_READY, qmp);
174
175 visit_free(v);
176 qobject_unref(qmp);
177}
178
179void qapi_event_send_block_job_pending(JobType type, const char *id)
180{
181 QDict *qmp;
182 QObject *obj;
183 Visitor *v;
184 q_obj_BLOCK_JOB_PENDING_arg param = {
185 type, (char *)id
186 };
187
188 qmp = qmp_event_build_dict("BLOCK_JOB_PENDING");
189
190 v = qobject_output_visitor_new(&obj);
191
192 visit_start_struct(v, "BLOCK_JOB_PENDING", NULL, 0, &error_abort);
193 visit_type_q_obj_BLOCK_JOB_PENDING_arg_members(v, &param, &error_abort);
194 visit_check_struct(v, &error_abort);
195 visit_end_struct(v, NULL);
196
197 visit_complete(v, &obj);
198 qdict_put_obj(qmp, "data", obj);
199 qapi_event_emit(QAPI_EVENT_BLOCK_JOB_PENDING, qmp);
200
201 visit_free(v);
202 qobject_unref(qmp);
203}
204
205void qapi_event_send_block_write_threshold(const char *node_name, uint64_t amount_exceeded, uint64_t write_threshold)
206{
207 QDict *qmp;
208 QObject *obj;
209 Visitor *v;
210 q_obj_BLOCK_WRITE_THRESHOLD_arg param = {
211 (char *)node_name, amount_exceeded, write_threshold
212 };
213
214 qmp = qmp_event_build_dict("BLOCK_WRITE_THRESHOLD");
215
216 v = qobject_output_visitor_new(&obj);
217
218 visit_start_struct(v, "BLOCK_WRITE_THRESHOLD", NULL, 0, &error_abort);
219 visit_type_q_obj_BLOCK_WRITE_THRESHOLD_arg_members(v, &param, &error_abort);
220 visit_check_struct(v, &error_abort);
221 visit_end_struct(v, NULL);
222
223 visit_complete(v, &obj);
224 qdict_put_obj(qmp, "data", obj);
225 qapi_event_emit(QAPI_EVENT_BLOCK_WRITE_THRESHOLD, qmp);
226
227 visit_free(v);
228 qobject_unref(qmp);
229}
230
231/* Dummy declaration to prevent empty .o file */
232char qapi_dummy_qapi_events_block_core_c;
233