Coverage Report

Created: 2025-08-26 06:54

/src/librabbitmq/librabbitmq/amqp_framing.c
Line
Count
Source (jump to first uncovered line)
1
// Copyright 2007 - 2021, Alan Antonuk and the rabbitmq-c contributors.
2
// SPDX-License-Identifier: mit
3
4
/* Generated code. Do not edit. Edit and re-run codegen.py instead. */
5
6
#ifdef HAVE_CONFIG_H
7
#include "config.h"
8
#endif
9
10
#include "amqp_private.h"
11
#include <stdint.h>
12
#include <stdio.h>
13
#include <stdlib.h>
14
#include <string.h>
15
16
0
char const *amqp_constant_name(int constantNumber) {
17
0
  switch (constantNumber) {
18
0
    case AMQP_FRAME_METHOD:
19
0
      return "AMQP_FRAME_METHOD";
20
0
    case AMQP_FRAME_HEADER:
21
0
      return "AMQP_FRAME_HEADER";
22
0
    case AMQP_FRAME_BODY:
23
0
      return "AMQP_FRAME_BODY";
24
0
    case AMQP_FRAME_HEARTBEAT:
25
0
      return "AMQP_FRAME_HEARTBEAT";
26
0
    case AMQP_FRAME_MIN_SIZE:
27
0
      return "AMQP_FRAME_MIN_SIZE";
28
0
    case AMQP_FRAME_END:
29
0
      return "AMQP_FRAME_END";
30
0
    case AMQP_REPLY_SUCCESS:
31
0
      return "AMQP_REPLY_SUCCESS";
32
0
    case AMQP_CONTENT_TOO_LARGE:
33
0
      return "AMQP_CONTENT_TOO_LARGE";
34
0
    case AMQP_NO_ROUTE:
35
0
      return "AMQP_NO_ROUTE";
36
0
    case AMQP_NO_CONSUMERS:
37
0
      return "AMQP_NO_CONSUMERS";
38
0
    case AMQP_ACCESS_REFUSED:
39
0
      return "AMQP_ACCESS_REFUSED";
40
0
    case AMQP_NOT_FOUND:
41
0
      return "AMQP_NOT_FOUND";
42
0
    case AMQP_RESOURCE_LOCKED:
43
0
      return "AMQP_RESOURCE_LOCKED";
44
0
    case AMQP_PRECONDITION_FAILED:
45
0
      return "AMQP_PRECONDITION_FAILED";
46
0
    case AMQP_CONNECTION_FORCED:
47
0
      return "AMQP_CONNECTION_FORCED";
48
0
    case AMQP_INVALID_PATH:
49
0
      return "AMQP_INVALID_PATH";
50
0
    case AMQP_FRAME_ERROR:
51
0
      return "AMQP_FRAME_ERROR";
52
0
    case AMQP_SYNTAX_ERROR:
53
0
      return "AMQP_SYNTAX_ERROR";
54
0
    case AMQP_COMMAND_INVALID:
55
0
      return "AMQP_COMMAND_INVALID";
56
0
    case AMQP_CHANNEL_ERROR:
57
0
      return "AMQP_CHANNEL_ERROR";
58
0
    case AMQP_UNEXPECTED_FRAME:
59
0
      return "AMQP_UNEXPECTED_FRAME";
60
0
    case AMQP_RESOURCE_ERROR:
61
0
      return "AMQP_RESOURCE_ERROR";
62
0
    case AMQP_NOT_ALLOWED:
63
0
      return "AMQP_NOT_ALLOWED";
64
0
    case AMQP_NOT_IMPLEMENTED:
65
0
      return "AMQP_NOT_IMPLEMENTED";
66
0
    case AMQP_INTERNAL_ERROR:
67
0
      return "AMQP_INTERNAL_ERROR";
68
0
    default:
69
0
      return "(unknown)";
70
0
  }
71
0
}
72
73
0
amqp_boolean_t amqp_constant_is_hard_error(int constantNumber) {
74
0
  switch (constantNumber) {
75
0
    case AMQP_CONNECTION_FORCED:
76
0
      return 1;
77
0
    case AMQP_INVALID_PATH:
78
0
      return 1;
79
0
    case AMQP_FRAME_ERROR:
80
0
      return 1;
81
0
    case AMQP_SYNTAX_ERROR:
82
0
      return 1;
83
0
    case AMQP_COMMAND_INVALID:
84
0
      return 1;
85
0
    case AMQP_CHANNEL_ERROR:
86
0
      return 1;
87
0
    case AMQP_UNEXPECTED_FRAME:
88
0
      return 1;
89
0
    case AMQP_RESOURCE_ERROR:
90
0
      return 1;
91
0
    case AMQP_NOT_ALLOWED:
92
0
      return 1;
93
0
    case AMQP_NOT_IMPLEMENTED:
94
0
      return 1;
95
0
    case AMQP_INTERNAL_ERROR:
96
0
      return 1;
97
0
    default:
98
0
      return 0;
99
0
  }
100
0
}
101
102
0
char const *amqp_method_name(amqp_method_number_t methodNumber) {
103
0
  switch (methodNumber) {
104
0
    case AMQP_CONNECTION_START_METHOD:
105
0
      return "AMQP_CONNECTION_START_METHOD";
106
0
    case AMQP_CONNECTION_START_OK_METHOD:
107
0
      return "AMQP_CONNECTION_START_OK_METHOD";
108
0
    case AMQP_CONNECTION_SECURE_METHOD:
109
0
      return "AMQP_CONNECTION_SECURE_METHOD";
110
0
    case AMQP_CONNECTION_SECURE_OK_METHOD:
111
0
      return "AMQP_CONNECTION_SECURE_OK_METHOD";
112
0
    case AMQP_CONNECTION_TUNE_METHOD:
113
0
      return "AMQP_CONNECTION_TUNE_METHOD";
114
0
    case AMQP_CONNECTION_TUNE_OK_METHOD:
115
0
      return "AMQP_CONNECTION_TUNE_OK_METHOD";
116
0
    case AMQP_CONNECTION_OPEN_METHOD:
117
0
      return "AMQP_CONNECTION_OPEN_METHOD";
118
0
    case AMQP_CONNECTION_OPEN_OK_METHOD:
119
0
      return "AMQP_CONNECTION_OPEN_OK_METHOD";
120
0
    case AMQP_CONNECTION_CLOSE_METHOD:
121
0
      return "AMQP_CONNECTION_CLOSE_METHOD";
122
0
    case AMQP_CONNECTION_CLOSE_OK_METHOD:
123
0
      return "AMQP_CONNECTION_CLOSE_OK_METHOD";
124
0
    case AMQP_CONNECTION_BLOCKED_METHOD:
125
0
      return "AMQP_CONNECTION_BLOCKED_METHOD";
126
0
    case AMQP_CONNECTION_UNBLOCKED_METHOD:
127
0
      return "AMQP_CONNECTION_UNBLOCKED_METHOD";
128
0
    case AMQP_CONNECTION_UPDATE_SECRET_METHOD:
129
0
      return "AMQP_CONNECTION_UPDATE_SECRET_METHOD";
130
0
    case AMQP_CONNECTION_UPDATE_SECRET_OK_METHOD:
131
0
      return "AMQP_CONNECTION_UPDATE_SECRET_OK_METHOD";
132
0
    case AMQP_CHANNEL_OPEN_METHOD:
133
0
      return "AMQP_CHANNEL_OPEN_METHOD";
134
0
    case AMQP_CHANNEL_OPEN_OK_METHOD:
135
0
      return "AMQP_CHANNEL_OPEN_OK_METHOD";
136
0
    case AMQP_CHANNEL_FLOW_METHOD:
137
0
      return "AMQP_CHANNEL_FLOW_METHOD";
138
0
    case AMQP_CHANNEL_FLOW_OK_METHOD:
139
0
      return "AMQP_CHANNEL_FLOW_OK_METHOD";
140
0
    case AMQP_CHANNEL_CLOSE_METHOD:
141
0
      return "AMQP_CHANNEL_CLOSE_METHOD";
142
0
    case AMQP_CHANNEL_CLOSE_OK_METHOD:
143
0
      return "AMQP_CHANNEL_CLOSE_OK_METHOD";
144
0
    case AMQP_ACCESS_REQUEST_METHOD:
145
0
      return "AMQP_ACCESS_REQUEST_METHOD";
146
0
    case AMQP_ACCESS_REQUEST_OK_METHOD:
147
0
      return "AMQP_ACCESS_REQUEST_OK_METHOD";
148
0
    case AMQP_EXCHANGE_DECLARE_METHOD:
149
0
      return "AMQP_EXCHANGE_DECLARE_METHOD";
150
0
    case AMQP_EXCHANGE_DECLARE_OK_METHOD:
151
0
      return "AMQP_EXCHANGE_DECLARE_OK_METHOD";
152
0
    case AMQP_EXCHANGE_DELETE_METHOD:
153
0
      return "AMQP_EXCHANGE_DELETE_METHOD";
154
0
    case AMQP_EXCHANGE_DELETE_OK_METHOD:
155
0
      return "AMQP_EXCHANGE_DELETE_OK_METHOD";
156
0
    case AMQP_EXCHANGE_BIND_METHOD:
157
0
      return "AMQP_EXCHANGE_BIND_METHOD";
158
0
    case AMQP_EXCHANGE_BIND_OK_METHOD:
159
0
      return "AMQP_EXCHANGE_BIND_OK_METHOD";
160
0
    case AMQP_EXCHANGE_UNBIND_METHOD:
161
0
      return "AMQP_EXCHANGE_UNBIND_METHOD";
162
0
    case AMQP_EXCHANGE_UNBIND_OK_METHOD:
163
0
      return "AMQP_EXCHANGE_UNBIND_OK_METHOD";
164
0
    case AMQP_QUEUE_DECLARE_METHOD:
165
0
      return "AMQP_QUEUE_DECLARE_METHOD";
166
0
    case AMQP_QUEUE_DECLARE_OK_METHOD:
167
0
      return "AMQP_QUEUE_DECLARE_OK_METHOD";
168
0
    case AMQP_QUEUE_BIND_METHOD:
169
0
      return "AMQP_QUEUE_BIND_METHOD";
170
0
    case AMQP_QUEUE_BIND_OK_METHOD:
171
0
      return "AMQP_QUEUE_BIND_OK_METHOD";
172
0
    case AMQP_QUEUE_PURGE_METHOD:
173
0
      return "AMQP_QUEUE_PURGE_METHOD";
174
0
    case AMQP_QUEUE_PURGE_OK_METHOD:
175
0
      return "AMQP_QUEUE_PURGE_OK_METHOD";
176
0
    case AMQP_QUEUE_DELETE_METHOD:
177
0
      return "AMQP_QUEUE_DELETE_METHOD";
178
0
    case AMQP_QUEUE_DELETE_OK_METHOD:
179
0
      return "AMQP_QUEUE_DELETE_OK_METHOD";
180
0
    case AMQP_QUEUE_UNBIND_METHOD:
181
0
      return "AMQP_QUEUE_UNBIND_METHOD";
182
0
    case AMQP_QUEUE_UNBIND_OK_METHOD:
183
0
      return "AMQP_QUEUE_UNBIND_OK_METHOD";
184
0
    case AMQP_BASIC_QOS_METHOD:
185
0
      return "AMQP_BASIC_QOS_METHOD";
186
0
    case AMQP_BASIC_QOS_OK_METHOD:
187
0
      return "AMQP_BASIC_QOS_OK_METHOD";
188
0
    case AMQP_BASIC_CONSUME_METHOD:
189
0
      return "AMQP_BASIC_CONSUME_METHOD";
190
0
    case AMQP_BASIC_CONSUME_OK_METHOD:
191
0
      return "AMQP_BASIC_CONSUME_OK_METHOD";
192
0
    case AMQP_BASIC_CANCEL_METHOD:
193
0
      return "AMQP_BASIC_CANCEL_METHOD";
194
0
    case AMQP_BASIC_CANCEL_OK_METHOD:
195
0
      return "AMQP_BASIC_CANCEL_OK_METHOD";
196
0
    case AMQP_BASIC_PUBLISH_METHOD:
197
0
      return "AMQP_BASIC_PUBLISH_METHOD";
198
0
    case AMQP_BASIC_RETURN_METHOD:
199
0
      return "AMQP_BASIC_RETURN_METHOD";
200
0
    case AMQP_BASIC_DELIVER_METHOD:
201
0
      return "AMQP_BASIC_DELIVER_METHOD";
202
0
    case AMQP_BASIC_GET_METHOD:
203
0
      return "AMQP_BASIC_GET_METHOD";
204
0
    case AMQP_BASIC_GET_OK_METHOD:
205
0
      return "AMQP_BASIC_GET_OK_METHOD";
206
0
    case AMQP_BASIC_GET_EMPTY_METHOD:
207
0
      return "AMQP_BASIC_GET_EMPTY_METHOD";
208
0
    case AMQP_BASIC_ACK_METHOD:
209
0
      return "AMQP_BASIC_ACK_METHOD";
210
0
    case AMQP_BASIC_REJECT_METHOD:
211
0
      return "AMQP_BASIC_REJECT_METHOD";
212
0
    case AMQP_BASIC_RECOVER_ASYNC_METHOD:
213
0
      return "AMQP_BASIC_RECOVER_ASYNC_METHOD";
214
0
    case AMQP_BASIC_RECOVER_METHOD:
215
0
      return "AMQP_BASIC_RECOVER_METHOD";
216
0
    case AMQP_BASIC_RECOVER_OK_METHOD:
217
0
      return "AMQP_BASIC_RECOVER_OK_METHOD";
218
0
    case AMQP_BASIC_NACK_METHOD:
219
0
      return "AMQP_BASIC_NACK_METHOD";
220
0
    case AMQP_TX_SELECT_METHOD:
221
0
      return "AMQP_TX_SELECT_METHOD";
222
0
    case AMQP_TX_SELECT_OK_METHOD:
223
0
      return "AMQP_TX_SELECT_OK_METHOD";
224
0
    case AMQP_TX_COMMIT_METHOD:
225
0
      return "AMQP_TX_COMMIT_METHOD";
226
0
    case AMQP_TX_COMMIT_OK_METHOD:
227
0
      return "AMQP_TX_COMMIT_OK_METHOD";
228
0
    case AMQP_TX_ROLLBACK_METHOD:
229
0
      return "AMQP_TX_ROLLBACK_METHOD";
230
0
    case AMQP_TX_ROLLBACK_OK_METHOD:
231
0
      return "AMQP_TX_ROLLBACK_OK_METHOD";
232
0
    case AMQP_CONFIRM_SELECT_METHOD:
233
0
      return "AMQP_CONFIRM_SELECT_METHOD";
234
0
    case AMQP_CONFIRM_SELECT_OK_METHOD:
235
0
      return "AMQP_CONFIRM_SELECT_OK_METHOD";
236
0
    default:
237
0
      return NULL;
238
0
  }
239
0
}
240
241
0
amqp_boolean_t amqp_method_has_content(amqp_method_number_t methodNumber) {
242
0
  switch (methodNumber) {
243
0
    case AMQP_BASIC_PUBLISH_METHOD:
244
0
      return 1;
245
0
    case AMQP_BASIC_RETURN_METHOD:
246
0
      return 1;
247
0
    case AMQP_BASIC_DELIVER_METHOD:
248
0
      return 1;
249
0
    case AMQP_BASIC_GET_OK_METHOD:
250
0
      return 1;
251
0
    default:
252
0
      return 0;
253
0
  }
254
0
}
255
256
int amqp_decode_method(amqp_method_number_t methodNumber, amqp_pool_t *pool,
257
0
                       amqp_bytes_t encoded, void **decoded) {
258
0
  size_t offset = 0;
259
0
  uint8_t bit_buffer;
260
261
0
  switch (methodNumber) {
262
0
    case AMQP_CONNECTION_START_METHOD: {
263
0
      amqp_connection_start_t *m = (amqp_connection_start_t *)amqp_pool_alloc(
264
0
          pool, sizeof(amqp_connection_start_t));
265
0
      if (m == NULL) {
266
0
        return AMQP_STATUS_NO_MEMORY;
267
0
      }
268
0
      if (!amqp_decode_8(encoded, &offset, &m->version_major))
269
0
        return AMQP_STATUS_BAD_AMQP_DATA;
270
0
      if (!amqp_decode_8(encoded, &offset, &m->version_minor))
271
0
        return AMQP_STATUS_BAD_AMQP_DATA;
272
0
      {
273
0
        int res =
274
0
            amqp_decode_table(encoded, pool, &(m->server_properties), &offset);
275
0
        if (res < 0) return res;
276
0
      }
277
0
      {
278
0
        uint32_t len;
279
0
        if (!amqp_decode_32(encoded, &offset, &len) ||
280
0
            !amqp_decode_bytes(encoded, &offset, &m->mechanisms, len))
281
0
          return AMQP_STATUS_BAD_AMQP_DATA;
282
0
      }
283
0
      {
284
0
        uint32_t len;
285
0
        if (!amqp_decode_32(encoded, &offset, &len) ||
286
0
            !amqp_decode_bytes(encoded, &offset, &m->locales, len))
287
0
          return AMQP_STATUS_BAD_AMQP_DATA;
288
0
      }
289
0
      *decoded = m;
290
0
      return 0;
291
0
    }
292
0
    case AMQP_CONNECTION_START_OK_METHOD: {
293
0
      amqp_connection_start_ok_t *m =
294
0
          (amqp_connection_start_ok_t *)amqp_pool_alloc(
295
0
              pool, sizeof(amqp_connection_start_ok_t));
296
0
      if (m == NULL) {
297
0
        return AMQP_STATUS_NO_MEMORY;
298
0
      }
299
0
      {
300
0
        int res =
301
0
            amqp_decode_table(encoded, pool, &(m->client_properties), &offset);
302
0
        if (res < 0) return res;
303
0
      }
304
0
      {
305
0
        uint8_t len;
306
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
307
0
            !amqp_decode_bytes(encoded, &offset, &m->mechanism, len))
308
0
          return AMQP_STATUS_BAD_AMQP_DATA;
309
0
      }
310
0
      {
311
0
        uint32_t len;
312
0
        if (!amqp_decode_32(encoded, &offset, &len) ||
313
0
            !amqp_decode_bytes(encoded, &offset, &m->response, len))
314
0
          return AMQP_STATUS_BAD_AMQP_DATA;
315
0
      }
316
0
      {
317
0
        uint8_t len;
318
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
319
0
            !amqp_decode_bytes(encoded, &offset, &m->locale, len))
320
0
          return AMQP_STATUS_BAD_AMQP_DATA;
321
0
      }
322
0
      *decoded = m;
323
0
      return 0;
324
0
    }
325
0
    case AMQP_CONNECTION_SECURE_METHOD: {
326
0
      amqp_connection_secure_t *m = (amqp_connection_secure_t *)amqp_pool_alloc(
327
0
          pool, sizeof(amqp_connection_secure_t));
328
0
      if (m == NULL) {
329
0
        return AMQP_STATUS_NO_MEMORY;
330
0
      }
331
0
      {
332
0
        uint32_t len;
333
0
        if (!amqp_decode_32(encoded, &offset, &len) ||
334
0
            !amqp_decode_bytes(encoded, &offset, &m->challenge, len))
335
0
          return AMQP_STATUS_BAD_AMQP_DATA;
336
0
      }
337
0
      *decoded = m;
338
0
      return 0;
339
0
    }
340
0
    case AMQP_CONNECTION_SECURE_OK_METHOD: {
341
0
      amqp_connection_secure_ok_t *m =
342
0
          (amqp_connection_secure_ok_t *)amqp_pool_alloc(
343
0
              pool, sizeof(amqp_connection_secure_ok_t));
344
0
      if (m == NULL) {
345
0
        return AMQP_STATUS_NO_MEMORY;
346
0
      }
347
0
      {
348
0
        uint32_t len;
349
0
        if (!amqp_decode_32(encoded, &offset, &len) ||
350
0
            !amqp_decode_bytes(encoded, &offset, &m->response, len))
351
0
          return AMQP_STATUS_BAD_AMQP_DATA;
352
0
      }
353
0
      *decoded = m;
354
0
      return 0;
355
0
    }
356
0
    case AMQP_CONNECTION_TUNE_METHOD: {
357
0
      amqp_connection_tune_t *m = (amqp_connection_tune_t *)amqp_pool_alloc(
358
0
          pool, sizeof(amqp_connection_tune_t));
359
0
      if (m == NULL) {
360
0
        return AMQP_STATUS_NO_MEMORY;
361
0
      }
362
0
      if (!amqp_decode_16(encoded, &offset, &m->channel_max))
363
0
        return AMQP_STATUS_BAD_AMQP_DATA;
364
0
      if (!amqp_decode_32(encoded, &offset, &m->frame_max))
365
0
        return AMQP_STATUS_BAD_AMQP_DATA;
366
0
      if (!amqp_decode_16(encoded, &offset, &m->heartbeat))
367
0
        return AMQP_STATUS_BAD_AMQP_DATA;
368
0
      *decoded = m;
369
0
      return 0;
370
0
    }
371
0
    case AMQP_CONNECTION_TUNE_OK_METHOD: {
372
0
      amqp_connection_tune_ok_t *m =
373
0
          (amqp_connection_tune_ok_t *)amqp_pool_alloc(
374
0
              pool, sizeof(amqp_connection_tune_ok_t));
375
0
      if (m == NULL) {
376
0
        return AMQP_STATUS_NO_MEMORY;
377
0
      }
378
0
      if (!amqp_decode_16(encoded, &offset, &m->channel_max))
379
0
        return AMQP_STATUS_BAD_AMQP_DATA;
380
0
      if (!amqp_decode_32(encoded, &offset, &m->frame_max))
381
0
        return AMQP_STATUS_BAD_AMQP_DATA;
382
0
      if (!amqp_decode_16(encoded, &offset, &m->heartbeat))
383
0
        return AMQP_STATUS_BAD_AMQP_DATA;
384
0
      *decoded = m;
385
0
      return 0;
386
0
    }
387
0
    case AMQP_CONNECTION_OPEN_METHOD: {
388
0
      amqp_connection_open_t *m = (amqp_connection_open_t *)amqp_pool_alloc(
389
0
          pool, sizeof(amqp_connection_open_t));
390
0
      if (m == NULL) {
391
0
        return AMQP_STATUS_NO_MEMORY;
392
0
      }
393
0
      {
394
0
        uint8_t len;
395
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
396
0
            !amqp_decode_bytes(encoded, &offset, &m->virtual_host, len))
397
0
          return AMQP_STATUS_BAD_AMQP_DATA;
398
0
      }
399
0
      {
400
0
        uint8_t len;
401
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
402
0
            !amqp_decode_bytes(encoded, &offset, &m->capabilities, len))
403
0
          return AMQP_STATUS_BAD_AMQP_DATA;
404
0
      }
405
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
406
0
        return AMQP_STATUS_BAD_AMQP_DATA;
407
0
      m->insist = (bit_buffer & (1 << 0)) ? 1 : 0;
408
0
      *decoded = m;
409
0
      return 0;
410
0
    }
411
0
    case AMQP_CONNECTION_OPEN_OK_METHOD: {
412
0
      amqp_connection_open_ok_t *m =
413
0
          (amqp_connection_open_ok_t *)amqp_pool_alloc(
414
0
              pool, sizeof(amqp_connection_open_ok_t));
415
0
      if (m == NULL) {
416
0
        return AMQP_STATUS_NO_MEMORY;
417
0
      }
418
0
      {
419
0
        uint8_t len;
420
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
421
0
            !amqp_decode_bytes(encoded, &offset, &m->known_hosts, len))
422
0
          return AMQP_STATUS_BAD_AMQP_DATA;
423
0
      }
424
0
      *decoded = m;
425
0
      return 0;
426
0
    }
427
0
    case AMQP_CONNECTION_CLOSE_METHOD: {
428
0
      amqp_connection_close_t *m = (amqp_connection_close_t *)amqp_pool_alloc(
429
0
          pool, sizeof(amqp_connection_close_t));
430
0
      if (m == NULL) {
431
0
        return AMQP_STATUS_NO_MEMORY;
432
0
      }
433
0
      if (!amqp_decode_16(encoded, &offset, &m->reply_code))
434
0
        return AMQP_STATUS_BAD_AMQP_DATA;
435
0
      {
436
0
        uint8_t len;
437
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
438
0
            !amqp_decode_bytes(encoded, &offset, &m->reply_text, len))
439
0
          return AMQP_STATUS_BAD_AMQP_DATA;
440
0
      }
441
0
      if (!amqp_decode_16(encoded, &offset, &m->class_id))
442
0
        return AMQP_STATUS_BAD_AMQP_DATA;
443
0
      if (!amqp_decode_16(encoded, &offset, &m->method_id))
444
0
        return AMQP_STATUS_BAD_AMQP_DATA;
445
0
      *decoded = m;
446
0
      return 0;
447
0
    }
448
0
    case AMQP_CONNECTION_CLOSE_OK_METHOD: {
449
0
      amqp_connection_close_ok_t *m =
450
0
          (amqp_connection_close_ok_t *)amqp_pool_alloc(
451
0
              pool, sizeof(amqp_connection_close_ok_t));
452
0
      if (m == NULL) {
453
0
        return AMQP_STATUS_NO_MEMORY;
454
0
      }
455
0
      *decoded = m;
456
0
      return 0;
457
0
    }
458
0
    case AMQP_CONNECTION_BLOCKED_METHOD: {
459
0
      amqp_connection_blocked_t *m =
460
0
          (amqp_connection_blocked_t *)amqp_pool_alloc(
461
0
              pool, sizeof(amqp_connection_blocked_t));
462
0
      if (m == NULL) {
463
0
        return AMQP_STATUS_NO_MEMORY;
464
0
      }
465
0
      {
466
0
        uint8_t len;
467
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
468
0
            !amqp_decode_bytes(encoded, &offset, &m->reason, len))
469
0
          return AMQP_STATUS_BAD_AMQP_DATA;
470
0
      }
471
0
      *decoded = m;
472
0
      return 0;
473
0
    }
474
0
    case AMQP_CONNECTION_UNBLOCKED_METHOD: {
475
0
      amqp_connection_unblocked_t *m =
476
0
          (amqp_connection_unblocked_t *)amqp_pool_alloc(
477
0
              pool, sizeof(amqp_connection_unblocked_t));
478
0
      if (m == NULL) {
479
0
        return AMQP_STATUS_NO_MEMORY;
480
0
      }
481
0
      *decoded = m;
482
0
      return 0;
483
0
    }
484
0
    case AMQP_CONNECTION_UPDATE_SECRET_METHOD: {
485
0
      amqp_connection_update_secret_t *m =
486
0
          (amqp_connection_update_secret_t *)amqp_pool_alloc(
487
0
              pool, sizeof(amqp_connection_update_secret_t));
488
0
      if (m == NULL) {
489
0
        return AMQP_STATUS_NO_MEMORY;
490
0
      }
491
0
      {
492
0
        uint32_t len;
493
0
        if (!amqp_decode_32(encoded, &offset, &len) ||
494
0
            !amqp_decode_bytes(encoded, &offset, &m->new_secret, len))
495
0
          return AMQP_STATUS_BAD_AMQP_DATA;
496
0
      }
497
0
      {
498
0
        uint8_t len;
499
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
500
0
            !amqp_decode_bytes(encoded, &offset, &m->reason, len))
501
0
          return AMQP_STATUS_BAD_AMQP_DATA;
502
0
      }
503
0
      *decoded = m;
504
0
      return 0;
505
0
    }
506
0
    case AMQP_CONNECTION_UPDATE_SECRET_OK_METHOD: {
507
0
      amqp_connection_update_secret_ok_t *m =
508
0
          (amqp_connection_update_secret_ok_t *)amqp_pool_alloc(
509
0
              pool, sizeof(amqp_connection_update_secret_ok_t));
510
0
      if (m == NULL) {
511
0
        return AMQP_STATUS_NO_MEMORY;
512
0
      }
513
0
      *decoded = m;
514
0
      return 0;
515
0
    }
516
0
    case AMQP_CHANNEL_OPEN_METHOD: {
517
0
      amqp_channel_open_t *m = (amqp_channel_open_t *)amqp_pool_alloc(
518
0
          pool, sizeof(amqp_channel_open_t));
519
0
      if (m == NULL) {
520
0
        return AMQP_STATUS_NO_MEMORY;
521
0
      }
522
0
      {
523
0
        uint8_t len;
524
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
525
0
            !amqp_decode_bytes(encoded, &offset, &m->out_of_band, len))
526
0
          return AMQP_STATUS_BAD_AMQP_DATA;
527
0
      }
528
0
      *decoded = m;
529
0
      return 0;
530
0
    }
531
0
    case AMQP_CHANNEL_OPEN_OK_METHOD: {
532
0
      amqp_channel_open_ok_t *m = (amqp_channel_open_ok_t *)amqp_pool_alloc(
533
0
          pool, sizeof(amqp_channel_open_ok_t));
534
0
      if (m == NULL) {
535
0
        return AMQP_STATUS_NO_MEMORY;
536
0
      }
537
0
      {
538
0
        uint32_t len;
539
0
        if (!amqp_decode_32(encoded, &offset, &len) ||
540
0
            !amqp_decode_bytes(encoded, &offset, &m->channel_id, len))
541
0
          return AMQP_STATUS_BAD_AMQP_DATA;
542
0
      }
543
0
      *decoded = m;
544
0
      return 0;
545
0
    }
546
0
    case AMQP_CHANNEL_FLOW_METHOD: {
547
0
      amqp_channel_flow_t *m = (amqp_channel_flow_t *)amqp_pool_alloc(
548
0
          pool, sizeof(amqp_channel_flow_t));
549
0
      if (m == NULL) {
550
0
        return AMQP_STATUS_NO_MEMORY;
551
0
      }
552
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
553
0
        return AMQP_STATUS_BAD_AMQP_DATA;
554
0
      m->active = (bit_buffer & (1 << 0)) ? 1 : 0;
555
0
      *decoded = m;
556
0
      return 0;
557
0
    }
558
0
    case AMQP_CHANNEL_FLOW_OK_METHOD: {
559
0
      amqp_channel_flow_ok_t *m = (amqp_channel_flow_ok_t *)amqp_pool_alloc(
560
0
          pool, sizeof(amqp_channel_flow_ok_t));
561
0
      if (m == NULL) {
562
0
        return AMQP_STATUS_NO_MEMORY;
563
0
      }
564
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
565
0
        return AMQP_STATUS_BAD_AMQP_DATA;
566
0
      m->active = (bit_buffer & (1 << 0)) ? 1 : 0;
567
0
      *decoded = m;
568
0
      return 0;
569
0
    }
570
0
    case AMQP_CHANNEL_CLOSE_METHOD: {
571
0
      amqp_channel_close_t *m = (amqp_channel_close_t *)amqp_pool_alloc(
572
0
          pool, sizeof(amqp_channel_close_t));
573
0
      if (m == NULL) {
574
0
        return AMQP_STATUS_NO_MEMORY;
575
0
      }
576
0
      if (!amqp_decode_16(encoded, &offset, &m->reply_code))
577
0
        return AMQP_STATUS_BAD_AMQP_DATA;
578
0
      {
579
0
        uint8_t len;
580
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
581
0
            !amqp_decode_bytes(encoded, &offset, &m->reply_text, len))
582
0
          return AMQP_STATUS_BAD_AMQP_DATA;
583
0
      }
584
0
      if (!amqp_decode_16(encoded, &offset, &m->class_id))
585
0
        return AMQP_STATUS_BAD_AMQP_DATA;
586
0
      if (!amqp_decode_16(encoded, &offset, &m->method_id))
587
0
        return AMQP_STATUS_BAD_AMQP_DATA;
588
0
      *decoded = m;
589
0
      return 0;
590
0
    }
591
0
    case AMQP_CHANNEL_CLOSE_OK_METHOD: {
592
0
      amqp_channel_close_ok_t *m = (amqp_channel_close_ok_t *)amqp_pool_alloc(
593
0
          pool, sizeof(amqp_channel_close_ok_t));
594
0
      if (m == NULL) {
595
0
        return AMQP_STATUS_NO_MEMORY;
596
0
      }
597
0
      *decoded = m;
598
0
      return 0;
599
0
    }
600
0
    case AMQP_ACCESS_REQUEST_METHOD: {
601
0
      amqp_access_request_t *m = (amqp_access_request_t *)amqp_pool_alloc(
602
0
          pool, sizeof(amqp_access_request_t));
603
0
      if (m == NULL) {
604
0
        return AMQP_STATUS_NO_MEMORY;
605
0
      }
606
0
      {
607
0
        uint8_t len;
608
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
609
0
            !amqp_decode_bytes(encoded, &offset, &m->realm, len))
610
0
          return AMQP_STATUS_BAD_AMQP_DATA;
611
0
      }
612
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
613
0
        return AMQP_STATUS_BAD_AMQP_DATA;
614
0
      m->exclusive = (bit_buffer & (1 << 0)) ? 1 : 0;
615
0
      m->passive = (bit_buffer & (1 << 1)) ? 1 : 0;
616
0
      m->active = (bit_buffer & (1 << 2)) ? 1 : 0;
617
0
      m->write = (bit_buffer & (1 << 3)) ? 1 : 0;
618
0
      m->read = (bit_buffer & (1 << 4)) ? 1 : 0;
619
0
      *decoded = m;
620
0
      return 0;
621
0
    }
622
0
    case AMQP_ACCESS_REQUEST_OK_METHOD: {
623
0
      amqp_access_request_ok_t *m = (amqp_access_request_ok_t *)amqp_pool_alloc(
624
0
          pool, sizeof(amqp_access_request_ok_t));
625
0
      if (m == NULL) {
626
0
        return AMQP_STATUS_NO_MEMORY;
627
0
      }
628
0
      if (!amqp_decode_16(encoded, &offset, &m->ticket))
629
0
        return AMQP_STATUS_BAD_AMQP_DATA;
630
0
      *decoded = m;
631
0
      return 0;
632
0
    }
633
0
    case AMQP_EXCHANGE_DECLARE_METHOD: {
634
0
      amqp_exchange_declare_t *m = (amqp_exchange_declare_t *)amqp_pool_alloc(
635
0
          pool, sizeof(amqp_exchange_declare_t));
636
0
      if (m == NULL) {
637
0
        return AMQP_STATUS_NO_MEMORY;
638
0
      }
639
0
      if (!amqp_decode_16(encoded, &offset, &m->ticket))
640
0
        return AMQP_STATUS_BAD_AMQP_DATA;
641
0
      {
642
0
        uint8_t len;
643
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
644
0
            !amqp_decode_bytes(encoded, &offset, &m->exchange, len))
645
0
          return AMQP_STATUS_BAD_AMQP_DATA;
646
0
      }
647
0
      {
648
0
        uint8_t len;
649
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
650
0
            !amqp_decode_bytes(encoded, &offset, &m->type, len))
651
0
          return AMQP_STATUS_BAD_AMQP_DATA;
652
0
      }
653
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
654
0
        return AMQP_STATUS_BAD_AMQP_DATA;
655
0
      m->passive = (bit_buffer & (1 << 0)) ? 1 : 0;
656
0
      m->durable = (bit_buffer & (1 << 1)) ? 1 : 0;
657
0
      m->auto_delete = (bit_buffer & (1 << 2)) ? 1 : 0;
658
0
      m->internal = (bit_buffer & (1 << 3)) ? 1 : 0;
659
0
      m->nowait = (bit_buffer & (1 << 4)) ? 1 : 0;
660
0
      {
661
0
        int res = amqp_decode_table(encoded, pool, &(m->arguments), &offset);
662
0
        if (res < 0) return res;
663
0
      }
664
0
      *decoded = m;
665
0
      return 0;
666
0
    }
667
0
    case AMQP_EXCHANGE_DECLARE_OK_METHOD: {
668
0
      amqp_exchange_declare_ok_t *m =
669
0
          (amqp_exchange_declare_ok_t *)amqp_pool_alloc(
670
0
              pool, sizeof(amqp_exchange_declare_ok_t));
671
0
      if (m == NULL) {
672
0
        return AMQP_STATUS_NO_MEMORY;
673
0
      }
674
0
      *decoded = m;
675
0
      return 0;
676
0
    }
677
0
    case AMQP_EXCHANGE_DELETE_METHOD: {
678
0
      amqp_exchange_delete_t *m = (amqp_exchange_delete_t *)amqp_pool_alloc(
679
0
          pool, sizeof(amqp_exchange_delete_t));
680
0
      if (m == NULL) {
681
0
        return AMQP_STATUS_NO_MEMORY;
682
0
      }
683
0
      if (!amqp_decode_16(encoded, &offset, &m->ticket))
684
0
        return AMQP_STATUS_BAD_AMQP_DATA;
685
0
      {
686
0
        uint8_t len;
687
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
688
0
            !amqp_decode_bytes(encoded, &offset, &m->exchange, len))
689
0
          return AMQP_STATUS_BAD_AMQP_DATA;
690
0
      }
691
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
692
0
        return AMQP_STATUS_BAD_AMQP_DATA;
693
0
      m->if_unused = (bit_buffer & (1 << 0)) ? 1 : 0;
694
0
      m->nowait = (bit_buffer & (1 << 1)) ? 1 : 0;
695
0
      *decoded = m;
696
0
      return 0;
697
0
    }
698
0
    case AMQP_EXCHANGE_DELETE_OK_METHOD: {
699
0
      amqp_exchange_delete_ok_t *m =
700
0
          (amqp_exchange_delete_ok_t *)amqp_pool_alloc(
701
0
              pool, sizeof(amqp_exchange_delete_ok_t));
702
0
      if (m == NULL) {
703
0
        return AMQP_STATUS_NO_MEMORY;
704
0
      }
705
0
      *decoded = m;
706
0
      return 0;
707
0
    }
708
0
    case AMQP_EXCHANGE_BIND_METHOD: {
709
0
      amqp_exchange_bind_t *m = (amqp_exchange_bind_t *)amqp_pool_alloc(
710
0
          pool, sizeof(amqp_exchange_bind_t));
711
0
      if (m == NULL) {
712
0
        return AMQP_STATUS_NO_MEMORY;
713
0
      }
714
0
      if (!amqp_decode_16(encoded, &offset, &m->ticket))
715
0
        return AMQP_STATUS_BAD_AMQP_DATA;
716
0
      {
717
0
        uint8_t len;
718
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
719
0
            !amqp_decode_bytes(encoded, &offset, &m->destination, len))
720
0
          return AMQP_STATUS_BAD_AMQP_DATA;
721
0
      }
722
0
      {
723
0
        uint8_t len;
724
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
725
0
            !amqp_decode_bytes(encoded, &offset, &m->source, len))
726
0
          return AMQP_STATUS_BAD_AMQP_DATA;
727
0
      }
728
0
      {
729
0
        uint8_t len;
730
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
731
0
            !amqp_decode_bytes(encoded, &offset, &m->routing_key, len))
732
0
          return AMQP_STATUS_BAD_AMQP_DATA;
733
0
      }
734
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
735
0
        return AMQP_STATUS_BAD_AMQP_DATA;
736
0
      m->nowait = (bit_buffer & (1 << 0)) ? 1 : 0;
737
0
      {
738
0
        int res = amqp_decode_table(encoded, pool, &(m->arguments), &offset);
739
0
        if (res < 0) return res;
740
0
      }
741
0
      *decoded = m;
742
0
      return 0;
743
0
    }
744
0
    case AMQP_EXCHANGE_BIND_OK_METHOD: {
745
0
      amqp_exchange_bind_ok_t *m = (amqp_exchange_bind_ok_t *)amqp_pool_alloc(
746
0
          pool, sizeof(amqp_exchange_bind_ok_t));
747
0
      if (m == NULL) {
748
0
        return AMQP_STATUS_NO_MEMORY;
749
0
      }
750
0
      *decoded = m;
751
0
      return 0;
752
0
    }
753
0
    case AMQP_EXCHANGE_UNBIND_METHOD: {
754
0
      amqp_exchange_unbind_t *m = (amqp_exchange_unbind_t *)amqp_pool_alloc(
755
0
          pool, sizeof(amqp_exchange_unbind_t));
756
0
      if (m == NULL) {
757
0
        return AMQP_STATUS_NO_MEMORY;
758
0
      }
759
0
      if (!amqp_decode_16(encoded, &offset, &m->ticket))
760
0
        return AMQP_STATUS_BAD_AMQP_DATA;
761
0
      {
762
0
        uint8_t len;
763
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
764
0
            !amqp_decode_bytes(encoded, &offset, &m->destination, len))
765
0
          return AMQP_STATUS_BAD_AMQP_DATA;
766
0
      }
767
0
      {
768
0
        uint8_t len;
769
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
770
0
            !amqp_decode_bytes(encoded, &offset, &m->source, len))
771
0
          return AMQP_STATUS_BAD_AMQP_DATA;
772
0
      }
773
0
      {
774
0
        uint8_t len;
775
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
776
0
            !amqp_decode_bytes(encoded, &offset, &m->routing_key, len))
777
0
          return AMQP_STATUS_BAD_AMQP_DATA;
778
0
      }
779
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
780
0
        return AMQP_STATUS_BAD_AMQP_DATA;
781
0
      m->nowait = (bit_buffer & (1 << 0)) ? 1 : 0;
782
0
      {
783
0
        int res = amqp_decode_table(encoded, pool, &(m->arguments), &offset);
784
0
        if (res < 0) return res;
785
0
      }
786
0
      *decoded = m;
787
0
      return 0;
788
0
    }
789
0
    case AMQP_EXCHANGE_UNBIND_OK_METHOD: {
790
0
      amqp_exchange_unbind_ok_t *m =
791
0
          (amqp_exchange_unbind_ok_t *)amqp_pool_alloc(
792
0
              pool, sizeof(amqp_exchange_unbind_ok_t));
793
0
      if (m == NULL) {
794
0
        return AMQP_STATUS_NO_MEMORY;
795
0
      }
796
0
      *decoded = m;
797
0
      return 0;
798
0
    }
799
0
    case AMQP_QUEUE_DECLARE_METHOD: {
800
0
      amqp_queue_declare_t *m = (amqp_queue_declare_t *)amqp_pool_alloc(
801
0
          pool, sizeof(amqp_queue_declare_t));
802
0
      if (m == NULL) {
803
0
        return AMQP_STATUS_NO_MEMORY;
804
0
      }
805
0
      if (!amqp_decode_16(encoded, &offset, &m->ticket))
806
0
        return AMQP_STATUS_BAD_AMQP_DATA;
807
0
      {
808
0
        uint8_t len;
809
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
810
0
            !amqp_decode_bytes(encoded, &offset, &m->queue, len))
811
0
          return AMQP_STATUS_BAD_AMQP_DATA;
812
0
      }
813
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
814
0
        return AMQP_STATUS_BAD_AMQP_DATA;
815
0
      m->passive = (bit_buffer & (1 << 0)) ? 1 : 0;
816
0
      m->durable = (bit_buffer & (1 << 1)) ? 1 : 0;
817
0
      m->exclusive = (bit_buffer & (1 << 2)) ? 1 : 0;
818
0
      m->auto_delete = (bit_buffer & (1 << 3)) ? 1 : 0;
819
0
      m->nowait = (bit_buffer & (1 << 4)) ? 1 : 0;
820
0
      {
821
0
        int res = amqp_decode_table(encoded, pool, &(m->arguments), &offset);
822
0
        if (res < 0) return res;
823
0
      }
824
0
      *decoded = m;
825
0
      return 0;
826
0
    }
827
0
    case AMQP_QUEUE_DECLARE_OK_METHOD: {
828
0
      amqp_queue_declare_ok_t *m = (amqp_queue_declare_ok_t *)amqp_pool_alloc(
829
0
          pool, sizeof(amqp_queue_declare_ok_t));
830
0
      if (m == NULL) {
831
0
        return AMQP_STATUS_NO_MEMORY;
832
0
      }
833
0
      {
834
0
        uint8_t len;
835
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
836
0
            !amqp_decode_bytes(encoded, &offset, &m->queue, len))
837
0
          return AMQP_STATUS_BAD_AMQP_DATA;
838
0
      }
839
0
      if (!amqp_decode_32(encoded, &offset, &m->message_count))
840
0
        return AMQP_STATUS_BAD_AMQP_DATA;
841
0
      if (!amqp_decode_32(encoded, &offset, &m->consumer_count))
842
0
        return AMQP_STATUS_BAD_AMQP_DATA;
843
0
      *decoded = m;
844
0
      return 0;
845
0
    }
846
0
    case AMQP_QUEUE_BIND_METHOD: {
847
0
      amqp_queue_bind_t *m =
848
0
          (amqp_queue_bind_t *)amqp_pool_alloc(pool, sizeof(amqp_queue_bind_t));
849
0
      if (m == NULL) {
850
0
        return AMQP_STATUS_NO_MEMORY;
851
0
      }
852
0
      if (!amqp_decode_16(encoded, &offset, &m->ticket))
853
0
        return AMQP_STATUS_BAD_AMQP_DATA;
854
0
      {
855
0
        uint8_t len;
856
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
857
0
            !amqp_decode_bytes(encoded, &offset, &m->queue, len))
858
0
          return AMQP_STATUS_BAD_AMQP_DATA;
859
0
      }
860
0
      {
861
0
        uint8_t len;
862
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
863
0
            !amqp_decode_bytes(encoded, &offset, &m->exchange, len))
864
0
          return AMQP_STATUS_BAD_AMQP_DATA;
865
0
      }
866
0
      {
867
0
        uint8_t len;
868
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
869
0
            !amqp_decode_bytes(encoded, &offset, &m->routing_key, len))
870
0
          return AMQP_STATUS_BAD_AMQP_DATA;
871
0
      }
872
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
873
0
        return AMQP_STATUS_BAD_AMQP_DATA;
874
0
      m->nowait = (bit_buffer & (1 << 0)) ? 1 : 0;
875
0
      {
876
0
        int res = amqp_decode_table(encoded, pool, &(m->arguments), &offset);
877
0
        if (res < 0) return res;
878
0
      }
879
0
      *decoded = m;
880
0
      return 0;
881
0
    }
882
0
    case AMQP_QUEUE_BIND_OK_METHOD: {
883
0
      amqp_queue_bind_ok_t *m = (amqp_queue_bind_ok_t *)amqp_pool_alloc(
884
0
          pool, sizeof(amqp_queue_bind_ok_t));
885
0
      if (m == NULL) {
886
0
        return AMQP_STATUS_NO_MEMORY;
887
0
      }
888
0
      *decoded = m;
889
0
      return 0;
890
0
    }
891
0
    case AMQP_QUEUE_PURGE_METHOD: {
892
0
      amqp_queue_purge_t *m = (amqp_queue_purge_t *)amqp_pool_alloc(
893
0
          pool, sizeof(amqp_queue_purge_t));
894
0
      if (m == NULL) {
895
0
        return AMQP_STATUS_NO_MEMORY;
896
0
      }
897
0
      if (!amqp_decode_16(encoded, &offset, &m->ticket))
898
0
        return AMQP_STATUS_BAD_AMQP_DATA;
899
0
      {
900
0
        uint8_t len;
901
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
902
0
            !amqp_decode_bytes(encoded, &offset, &m->queue, len))
903
0
          return AMQP_STATUS_BAD_AMQP_DATA;
904
0
      }
905
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
906
0
        return AMQP_STATUS_BAD_AMQP_DATA;
907
0
      m->nowait = (bit_buffer & (1 << 0)) ? 1 : 0;
908
0
      *decoded = m;
909
0
      return 0;
910
0
    }
911
0
    case AMQP_QUEUE_PURGE_OK_METHOD: {
912
0
      amqp_queue_purge_ok_t *m = (amqp_queue_purge_ok_t *)amqp_pool_alloc(
913
0
          pool, sizeof(amqp_queue_purge_ok_t));
914
0
      if (m == NULL) {
915
0
        return AMQP_STATUS_NO_MEMORY;
916
0
      }
917
0
      if (!amqp_decode_32(encoded, &offset, &m->message_count))
918
0
        return AMQP_STATUS_BAD_AMQP_DATA;
919
0
      *decoded = m;
920
0
      return 0;
921
0
    }
922
0
    case AMQP_QUEUE_DELETE_METHOD: {
923
0
      amqp_queue_delete_t *m = (amqp_queue_delete_t *)amqp_pool_alloc(
924
0
          pool, sizeof(amqp_queue_delete_t));
925
0
      if (m == NULL) {
926
0
        return AMQP_STATUS_NO_MEMORY;
927
0
      }
928
0
      if (!amqp_decode_16(encoded, &offset, &m->ticket))
929
0
        return AMQP_STATUS_BAD_AMQP_DATA;
930
0
      {
931
0
        uint8_t len;
932
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
933
0
            !amqp_decode_bytes(encoded, &offset, &m->queue, len))
934
0
          return AMQP_STATUS_BAD_AMQP_DATA;
935
0
      }
936
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
937
0
        return AMQP_STATUS_BAD_AMQP_DATA;
938
0
      m->if_unused = (bit_buffer & (1 << 0)) ? 1 : 0;
939
0
      m->if_empty = (bit_buffer & (1 << 1)) ? 1 : 0;
940
0
      m->nowait = (bit_buffer & (1 << 2)) ? 1 : 0;
941
0
      *decoded = m;
942
0
      return 0;
943
0
    }
944
0
    case AMQP_QUEUE_DELETE_OK_METHOD: {
945
0
      amqp_queue_delete_ok_t *m = (amqp_queue_delete_ok_t *)amqp_pool_alloc(
946
0
          pool, sizeof(amqp_queue_delete_ok_t));
947
0
      if (m == NULL) {
948
0
        return AMQP_STATUS_NO_MEMORY;
949
0
      }
950
0
      if (!amqp_decode_32(encoded, &offset, &m->message_count))
951
0
        return AMQP_STATUS_BAD_AMQP_DATA;
952
0
      *decoded = m;
953
0
      return 0;
954
0
    }
955
0
    case AMQP_QUEUE_UNBIND_METHOD: {
956
0
      amqp_queue_unbind_t *m = (amqp_queue_unbind_t *)amqp_pool_alloc(
957
0
          pool, sizeof(amqp_queue_unbind_t));
958
0
      if (m == NULL) {
959
0
        return AMQP_STATUS_NO_MEMORY;
960
0
      }
961
0
      if (!amqp_decode_16(encoded, &offset, &m->ticket))
962
0
        return AMQP_STATUS_BAD_AMQP_DATA;
963
0
      {
964
0
        uint8_t len;
965
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
966
0
            !amqp_decode_bytes(encoded, &offset, &m->queue, len))
967
0
          return AMQP_STATUS_BAD_AMQP_DATA;
968
0
      }
969
0
      {
970
0
        uint8_t len;
971
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
972
0
            !amqp_decode_bytes(encoded, &offset, &m->exchange, len))
973
0
          return AMQP_STATUS_BAD_AMQP_DATA;
974
0
      }
975
0
      {
976
0
        uint8_t len;
977
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
978
0
            !amqp_decode_bytes(encoded, &offset, &m->routing_key, len))
979
0
          return AMQP_STATUS_BAD_AMQP_DATA;
980
0
      }
981
0
      {
982
0
        int res = amqp_decode_table(encoded, pool, &(m->arguments), &offset);
983
0
        if (res < 0) return res;
984
0
      }
985
0
      *decoded = m;
986
0
      return 0;
987
0
    }
988
0
    case AMQP_QUEUE_UNBIND_OK_METHOD: {
989
0
      amqp_queue_unbind_ok_t *m = (amqp_queue_unbind_ok_t *)amqp_pool_alloc(
990
0
          pool, sizeof(amqp_queue_unbind_ok_t));
991
0
      if (m == NULL) {
992
0
        return AMQP_STATUS_NO_MEMORY;
993
0
      }
994
0
      *decoded = m;
995
0
      return 0;
996
0
    }
997
0
    case AMQP_BASIC_QOS_METHOD: {
998
0
      amqp_basic_qos_t *m =
999
0
          (amqp_basic_qos_t *)amqp_pool_alloc(pool, sizeof(amqp_basic_qos_t));
1000
0
      if (m == NULL) {
1001
0
        return AMQP_STATUS_NO_MEMORY;
1002
0
      }
1003
0
      if (!amqp_decode_32(encoded, &offset, &m->prefetch_size))
1004
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1005
0
      if (!amqp_decode_16(encoded, &offset, &m->prefetch_count))
1006
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1007
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
1008
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1009
0
      m->global = (bit_buffer & (1 << 0)) ? 1 : 0;
1010
0
      *decoded = m;
1011
0
      return 0;
1012
0
    }
1013
0
    case AMQP_BASIC_QOS_OK_METHOD: {
1014
0
      amqp_basic_qos_ok_t *m = (amqp_basic_qos_ok_t *)amqp_pool_alloc(
1015
0
          pool, sizeof(amqp_basic_qos_ok_t));
1016
0
      if (m == NULL) {
1017
0
        return AMQP_STATUS_NO_MEMORY;
1018
0
      }
1019
0
      *decoded = m;
1020
0
      return 0;
1021
0
    }
1022
0
    case AMQP_BASIC_CONSUME_METHOD: {
1023
0
      amqp_basic_consume_t *m = (amqp_basic_consume_t *)amqp_pool_alloc(
1024
0
          pool, sizeof(amqp_basic_consume_t));
1025
0
      if (m == NULL) {
1026
0
        return AMQP_STATUS_NO_MEMORY;
1027
0
      }
1028
0
      if (!amqp_decode_16(encoded, &offset, &m->ticket))
1029
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1030
0
      {
1031
0
        uint8_t len;
1032
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1033
0
            !amqp_decode_bytes(encoded, &offset, &m->queue, len))
1034
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1035
0
      }
1036
0
      {
1037
0
        uint8_t len;
1038
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1039
0
            !amqp_decode_bytes(encoded, &offset, &m->consumer_tag, len))
1040
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1041
0
      }
1042
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
1043
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1044
0
      m->no_local = (bit_buffer & (1 << 0)) ? 1 : 0;
1045
0
      m->no_ack = (bit_buffer & (1 << 1)) ? 1 : 0;
1046
0
      m->exclusive = (bit_buffer & (1 << 2)) ? 1 : 0;
1047
0
      m->nowait = (bit_buffer & (1 << 3)) ? 1 : 0;
1048
0
      {
1049
0
        int res = amqp_decode_table(encoded, pool, &(m->arguments), &offset);
1050
0
        if (res < 0) return res;
1051
0
      }
1052
0
      *decoded = m;
1053
0
      return 0;
1054
0
    }
1055
0
    case AMQP_BASIC_CONSUME_OK_METHOD: {
1056
0
      amqp_basic_consume_ok_t *m = (amqp_basic_consume_ok_t *)amqp_pool_alloc(
1057
0
          pool, sizeof(amqp_basic_consume_ok_t));
1058
0
      if (m == NULL) {
1059
0
        return AMQP_STATUS_NO_MEMORY;
1060
0
      }
1061
0
      {
1062
0
        uint8_t len;
1063
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1064
0
            !amqp_decode_bytes(encoded, &offset, &m->consumer_tag, len))
1065
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1066
0
      }
1067
0
      *decoded = m;
1068
0
      return 0;
1069
0
    }
1070
0
    case AMQP_BASIC_CANCEL_METHOD: {
1071
0
      amqp_basic_cancel_t *m = (amqp_basic_cancel_t *)amqp_pool_alloc(
1072
0
          pool, sizeof(amqp_basic_cancel_t));
1073
0
      if (m == NULL) {
1074
0
        return AMQP_STATUS_NO_MEMORY;
1075
0
      }
1076
0
      {
1077
0
        uint8_t len;
1078
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1079
0
            !amqp_decode_bytes(encoded, &offset, &m->consumer_tag, len))
1080
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1081
0
      }
1082
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
1083
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1084
0
      m->nowait = (bit_buffer & (1 << 0)) ? 1 : 0;
1085
0
      *decoded = m;
1086
0
      return 0;
1087
0
    }
1088
0
    case AMQP_BASIC_CANCEL_OK_METHOD: {
1089
0
      amqp_basic_cancel_ok_t *m = (amqp_basic_cancel_ok_t *)amqp_pool_alloc(
1090
0
          pool, sizeof(amqp_basic_cancel_ok_t));
1091
0
      if (m == NULL) {
1092
0
        return AMQP_STATUS_NO_MEMORY;
1093
0
      }
1094
0
      {
1095
0
        uint8_t len;
1096
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1097
0
            !amqp_decode_bytes(encoded, &offset, &m->consumer_tag, len))
1098
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1099
0
      }
1100
0
      *decoded = m;
1101
0
      return 0;
1102
0
    }
1103
0
    case AMQP_BASIC_PUBLISH_METHOD: {
1104
0
      amqp_basic_publish_t *m = (amqp_basic_publish_t *)amqp_pool_alloc(
1105
0
          pool, sizeof(amqp_basic_publish_t));
1106
0
      if (m == NULL) {
1107
0
        return AMQP_STATUS_NO_MEMORY;
1108
0
      }
1109
0
      if (!amqp_decode_16(encoded, &offset, &m->ticket))
1110
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1111
0
      {
1112
0
        uint8_t len;
1113
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1114
0
            !amqp_decode_bytes(encoded, &offset, &m->exchange, len))
1115
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1116
0
      }
1117
0
      {
1118
0
        uint8_t len;
1119
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1120
0
            !amqp_decode_bytes(encoded, &offset, &m->routing_key, len))
1121
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1122
0
      }
1123
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
1124
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1125
0
      m->mandatory = (bit_buffer & (1 << 0)) ? 1 : 0;
1126
0
      m->immediate = (bit_buffer & (1 << 1)) ? 1 : 0;
1127
0
      *decoded = m;
1128
0
      return 0;
1129
0
    }
1130
0
    case AMQP_BASIC_RETURN_METHOD: {
1131
0
      amqp_basic_return_t *m = (amqp_basic_return_t *)amqp_pool_alloc(
1132
0
          pool, sizeof(amqp_basic_return_t));
1133
0
      if (m == NULL) {
1134
0
        return AMQP_STATUS_NO_MEMORY;
1135
0
      }
1136
0
      if (!amqp_decode_16(encoded, &offset, &m->reply_code))
1137
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1138
0
      {
1139
0
        uint8_t len;
1140
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1141
0
            !amqp_decode_bytes(encoded, &offset, &m->reply_text, len))
1142
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1143
0
      }
1144
0
      {
1145
0
        uint8_t len;
1146
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1147
0
            !amqp_decode_bytes(encoded, &offset, &m->exchange, len))
1148
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1149
0
      }
1150
0
      {
1151
0
        uint8_t len;
1152
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1153
0
            !amqp_decode_bytes(encoded, &offset, &m->routing_key, len))
1154
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1155
0
      }
1156
0
      *decoded = m;
1157
0
      return 0;
1158
0
    }
1159
0
    case AMQP_BASIC_DELIVER_METHOD: {
1160
0
      amqp_basic_deliver_t *m = (amqp_basic_deliver_t *)amqp_pool_alloc(
1161
0
          pool, sizeof(amqp_basic_deliver_t));
1162
0
      if (m == NULL) {
1163
0
        return AMQP_STATUS_NO_MEMORY;
1164
0
      }
1165
0
      {
1166
0
        uint8_t len;
1167
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1168
0
            !amqp_decode_bytes(encoded, &offset, &m->consumer_tag, len))
1169
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1170
0
      }
1171
0
      if (!amqp_decode_64(encoded, &offset, &m->delivery_tag))
1172
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1173
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
1174
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1175
0
      m->redelivered = (bit_buffer & (1 << 0)) ? 1 : 0;
1176
0
      {
1177
0
        uint8_t len;
1178
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1179
0
            !amqp_decode_bytes(encoded, &offset, &m->exchange, len))
1180
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1181
0
      }
1182
0
      {
1183
0
        uint8_t len;
1184
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1185
0
            !amqp_decode_bytes(encoded, &offset, &m->routing_key, len))
1186
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1187
0
      }
1188
0
      *decoded = m;
1189
0
      return 0;
1190
0
    }
1191
0
    case AMQP_BASIC_GET_METHOD: {
1192
0
      amqp_basic_get_t *m =
1193
0
          (amqp_basic_get_t *)amqp_pool_alloc(pool, sizeof(amqp_basic_get_t));
1194
0
      if (m == NULL) {
1195
0
        return AMQP_STATUS_NO_MEMORY;
1196
0
      }
1197
0
      if (!amqp_decode_16(encoded, &offset, &m->ticket))
1198
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1199
0
      {
1200
0
        uint8_t len;
1201
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1202
0
            !amqp_decode_bytes(encoded, &offset, &m->queue, len))
1203
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1204
0
      }
1205
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
1206
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1207
0
      m->no_ack = (bit_buffer & (1 << 0)) ? 1 : 0;
1208
0
      *decoded = m;
1209
0
      return 0;
1210
0
    }
1211
0
    case AMQP_BASIC_GET_OK_METHOD: {
1212
0
      amqp_basic_get_ok_t *m = (amqp_basic_get_ok_t *)amqp_pool_alloc(
1213
0
          pool, sizeof(amqp_basic_get_ok_t));
1214
0
      if (m == NULL) {
1215
0
        return AMQP_STATUS_NO_MEMORY;
1216
0
      }
1217
0
      if (!amqp_decode_64(encoded, &offset, &m->delivery_tag))
1218
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1219
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
1220
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1221
0
      m->redelivered = (bit_buffer & (1 << 0)) ? 1 : 0;
1222
0
      {
1223
0
        uint8_t len;
1224
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1225
0
            !amqp_decode_bytes(encoded, &offset, &m->exchange, len))
1226
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1227
0
      }
1228
0
      {
1229
0
        uint8_t len;
1230
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1231
0
            !amqp_decode_bytes(encoded, &offset, &m->routing_key, len))
1232
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1233
0
      }
1234
0
      if (!amqp_decode_32(encoded, &offset, &m->message_count))
1235
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1236
0
      *decoded = m;
1237
0
      return 0;
1238
0
    }
1239
0
    case AMQP_BASIC_GET_EMPTY_METHOD: {
1240
0
      amqp_basic_get_empty_t *m = (amqp_basic_get_empty_t *)amqp_pool_alloc(
1241
0
          pool, sizeof(amqp_basic_get_empty_t));
1242
0
      if (m == NULL) {
1243
0
        return AMQP_STATUS_NO_MEMORY;
1244
0
      }
1245
0
      {
1246
0
        uint8_t len;
1247
0
        if (!amqp_decode_8(encoded, &offset, &len) ||
1248
0
            !amqp_decode_bytes(encoded, &offset, &m->cluster_id, len))
1249
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1250
0
      }
1251
0
      *decoded = m;
1252
0
      return 0;
1253
0
    }
1254
0
    case AMQP_BASIC_ACK_METHOD: {
1255
0
      amqp_basic_ack_t *m =
1256
0
          (amqp_basic_ack_t *)amqp_pool_alloc(pool, sizeof(amqp_basic_ack_t));
1257
0
      if (m == NULL) {
1258
0
        return AMQP_STATUS_NO_MEMORY;
1259
0
      }
1260
0
      if (!amqp_decode_64(encoded, &offset, &m->delivery_tag))
1261
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1262
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
1263
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1264
0
      m->multiple = (bit_buffer & (1 << 0)) ? 1 : 0;
1265
0
      *decoded = m;
1266
0
      return 0;
1267
0
    }
1268
0
    case AMQP_BASIC_REJECT_METHOD: {
1269
0
      amqp_basic_reject_t *m = (amqp_basic_reject_t *)amqp_pool_alloc(
1270
0
          pool, sizeof(amqp_basic_reject_t));
1271
0
      if (m == NULL) {
1272
0
        return AMQP_STATUS_NO_MEMORY;
1273
0
      }
1274
0
      if (!amqp_decode_64(encoded, &offset, &m->delivery_tag))
1275
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1276
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
1277
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1278
0
      m->requeue = (bit_buffer & (1 << 0)) ? 1 : 0;
1279
0
      *decoded = m;
1280
0
      return 0;
1281
0
    }
1282
0
    case AMQP_BASIC_RECOVER_ASYNC_METHOD: {
1283
0
      amqp_basic_recover_async_t *m =
1284
0
          (amqp_basic_recover_async_t *)amqp_pool_alloc(
1285
0
              pool, sizeof(amqp_basic_recover_async_t));
1286
0
      if (m == NULL) {
1287
0
        return AMQP_STATUS_NO_MEMORY;
1288
0
      }
1289
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
1290
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1291
0
      m->requeue = (bit_buffer & (1 << 0)) ? 1 : 0;
1292
0
      *decoded = m;
1293
0
      return 0;
1294
0
    }
1295
0
    case AMQP_BASIC_RECOVER_METHOD: {
1296
0
      amqp_basic_recover_t *m = (amqp_basic_recover_t *)amqp_pool_alloc(
1297
0
          pool, sizeof(amqp_basic_recover_t));
1298
0
      if (m == NULL) {
1299
0
        return AMQP_STATUS_NO_MEMORY;
1300
0
      }
1301
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
1302
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1303
0
      m->requeue = (bit_buffer & (1 << 0)) ? 1 : 0;
1304
0
      *decoded = m;
1305
0
      return 0;
1306
0
    }
1307
0
    case AMQP_BASIC_RECOVER_OK_METHOD: {
1308
0
      amqp_basic_recover_ok_t *m = (amqp_basic_recover_ok_t *)amqp_pool_alloc(
1309
0
          pool, sizeof(amqp_basic_recover_ok_t));
1310
0
      if (m == NULL) {
1311
0
        return AMQP_STATUS_NO_MEMORY;
1312
0
      }
1313
0
      *decoded = m;
1314
0
      return 0;
1315
0
    }
1316
0
    case AMQP_BASIC_NACK_METHOD: {
1317
0
      amqp_basic_nack_t *m =
1318
0
          (amqp_basic_nack_t *)amqp_pool_alloc(pool, sizeof(amqp_basic_nack_t));
1319
0
      if (m == NULL) {
1320
0
        return AMQP_STATUS_NO_MEMORY;
1321
0
      }
1322
0
      if (!amqp_decode_64(encoded, &offset, &m->delivery_tag))
1323
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1324
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
1325
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1326
0
      m->multiple = (bit_buffer & (1 << 0)) ? 1 : 0;
1327
0
      m->requeue = (bit_buffer & (1 << 1)) ? 1 : 0;
1328
0
      *decoded = m;
1329
0
      return 0;
1330
0
    }
1331
0
    case AMQP_TX_SELECT_METHOD: {
1332
0
      amqp_tx_select_t *m =
1333
0
          (amqp_tx_select_t *)amqp_pool_alloc(pool, sizeof(amqp_tx_select_t));
1334
0
      if (m == NULL) {
1335
0
        return AMQP_STATUS_NO_MEMORY;
1336
0
      }
1337
0
      *decoded = m;
1338
0
      return 0;
1339
0
    }
1340
0
    case AMQP_TX_SELECT_OK_METHOD: {
1341
0
      amqp_tx_select_ok_t *m = (amqp_tx_select_ok_t *)amqp_pool_alloc(
1342
0
          pool, sizeof(amqp_tx_select_ok_t));
1343
0
      if (m == NULL) {
1344
0
        return AMQP_STATUS_NO_MEMORY;
1345
0
      }
1346
0
      *decoded = m;
1347
0
      return 0;
1348
0
    }
1349
0
    case AMQP_TX_COMMIT_METHOD: {
1350
0
      amqp_tx_commit_t *m =
1351
0
          (amqp_tx_commit_t *)amqp_pool_alloc(pool, sizeof(amqp_tx_commit_t));
1352
0
      if (m == NULL) {
1353
0
        return AMQP_STATUS_NO_MEMORY;
1354
0
      }
1355
0
      *decoded = m;
1356
0
      return 0;
1357
0
    }
1358
0
    case AMQP_TX_COMMIT_OK_METHOD: {
1359
0
      amqp_tx_commit_ok_t *m = (amqp_tx_commit_ok_t *)amqp_pool_alloc(
1360
0
          pool, sizeof(amqp_tx_commit_ok_t));
1361
0
      if (m == NULL) {
1362
0
        return AMQP_STATUS_NO_MEMORY;
1363
0
      }
1364
0
      *decoded = m;
1365
0
      return 0;
1366
0
    }
1367
0
    case AMQP_TX_ROLLBACK_METHOD: {
1368
0
      amqp_tx_rollback_t *m = (amqp_tx_rollback_t *)amqp_pool_alloc(
1369
0
          pool, sizeof(amqp_tx_rollback_t));
1370
0
      if (m == NULL) {
1371
0
        return AMQP_STATUS_NO_MEMORY;
1372
0
      }
1373
0
      *decoded = m;
1374
0
      return 0;
1375
0
    }
1376
0
    case AMQP_TX_ROLLBACK_OK_METHOD: {
1377
0
      amqp_tx_rollback_ok_t *m = (amqp_tx_rollback_ok_t *)amqp_pool_alloc(
1378
0
          pool, sizeof(amqp_tx_rollback_ok_t));
1379
0
      if (m == NULL) {
1380
0
        return AMQP_STATUS_NO_MEMORY;
1381
0
      }
1382
0
      *decoded = m;
1383
0
      return 0;
1384
0
    }
1385
0
    case AMQP_CONFIRM_SELECT_METHOD: {
1386
0
      amqp_confirm_select_t *m = (amqp_confirm_select_t *)amqp_pool_alloc(
1387
0
          pool, sizeof(amqp_confirm_select_t));
1388
0
      if (m == NULL) {
1389
0
        return AMQP_STATUS_NO_MEMORY;
1390
0
      }
1391
0
      if (!amqp_decode_8(encoded, &offset, &bit_buffer))
1392
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1393
0
      m->nowait = (bit_buffer & (1 << 0)) ? 1 : 0;
1394
0
      *decoded = m;
1395
0
      return 0;
1396
0
    }
1397
0
    case AMQP_CONFIRM_SELECT_OK_METHOD: {
1398
0
      amqp_confirm_select_ok_t *m = (amqp_confirm_select_ok_t *)amqp_pool_alloc(
1399
0
          pool, sizeof(amqp_confirm_select_ok_t));
1400
0
      if (m == NULL) {
1401
0
        return AMQP_STATUS_NO_MEMORY;
1402
0
      }
1403
0
      *decoded = m;
1404
0
      return 0;
1405
0
    }
1406
0
    default:
1407
0
      return AMQP_STATUS_UNKNOWN_METHOD;
1408
0
  }
1409
0
}
1410
1411
int amqp_decode_properties(uint16_t class_id, amqp_pool_t *pool,
1412
0
                           amqp_bytes_t encoded, void **decoded) {
1413
0
  size_t offset = 0;
1414
1415
0
  amqp_flags_t flags = 0;
1416
0
  int flagword_index = 0;
1417
0
  uint16_t partial_flags;
1418
1419
0
  do {
1420
0
    if (!amqp_decode_16(encoded, &offset, &partial_flags))
1421
0
      return AMQP_STATUS_BAD_AMQP_DATA;
1422
0
    flags |= (partial_flags << (flagword_index * 16));
1423
0
    flagword_index++;
1424
0
  } while (partial_flags & 1);
1425
1426
0
  switch (class_id) {
1427
0
    case 10: {
1428
0
      amqp_connection_properties_t *p =
1429
0
          (amqp_connection_properties_t *)amqp_pool_alloc(
1430
0
              pool, sizeof(amqp_connection_properties_t));
1431
0
      if (p == NULL) {
1432
0
        return AMQP_STATUS_NO_MEMORY;
1433
0
      }
1434
0
      p->_flags = flags;
1435
0
      *decoded = p;
1436
0
      return 0;
1437
0
    }
1438
0
    case 20: {
1439
0
      amqp_channel_properties_t *p =
1440
0
          (amqp_channel_properties_t *)amqp_pool_alloc(
1441
0
              pool, sizeof(amqp_channel_properties_t));
1442
0
      if (p == NULL) {
1443
0
        return AMQP_STATUS_NO_MEMORY;
1444
0
      }
1445
0
      p->_flags = flags;
1446
0
      *decoded = p;
1447
0
      return 0;
1448
0
    }
1449
0
    case 30: {
1450
0
      amqp_access_properties_t *p = (amqp_access_properties_t *)amqp_pool_alloc(
1451
0
          pool, sizeof(amqp_access_properties_t));
1452
0
      if (p == NULL) {
1453
0
        return AMQP_STATUS_NO_MEMORY;
1454
0
      }
1455
0
      p->_flags = flags;
1456
0
      *decoded = p;
1457
0
      return 0;
1458
0
    }
1459
0
    case 40: {
1460
0
      amqp_exchange_properties_t *p =
1461
0
          (amqp_exchange_properties_t *)amqp_pool_alloc(
1462
0
              pool, sizeof(amqp_exchange_properties_t));
1463
0
      if (p == NULL) {
1464
0
        return AMQP_STATUS_NO_MEMORY;
1465
0
      }
1466
0
      p->_flags = flags;
1467
0
      *decoded = p;
1468
0
      return 0;
1469
0
    }
1470
0
    case 50: {
1471
0
      amqp_queue_properties_t *p = (amqp_queue_properties_t *)amqp_pool_alloc(
1472
0
          pool, sizeof(amqp_queue_properties_t));
1473
0
      if (p == NULL) {
1474
0
        return AMQP_STATUS_NO_MEMORY;
1475
0
      }
1476
0
      p->_flags = flags;
1477
0
      *decoded = p;
1478
0
      return 0;
1479
0
    }
1480
0
    case 60: {
1481
0
      amqp_basic_properties_t *p = (amqp_basic_properties_t *)amqp_pool_alloc(
1482
0
          pool, sizeof(amqp_basic_properties_t));
1483
0
      if (p == NULL) {
1484
0
        return AMQP_STATUS_NO_MEMORY;
1485
0
      }
1486
0
      p->_flags = flags;
1487
0
      if (flags & AMQP_BASIC_CONTENT_TYPE_FLAG) {
1488
0
        {
1489
0
          uint8_t len;
1490
0
          if (!amqp_decode_8(encoded, &offset, &len) ||
1491
0
              !amqp_decode_bytes(encoded, &offset, &p->content_type, len))
1492
0
            return AMQP_STATUS_BAD_AMQP_DATA;
1493
0
        }
1494
0
      }
1495
0
      if (flags & AMQP_BASIC_CONTENT_ENCODING_FLAG) {
1496
0
        {
1497
0
          uint8_t len;
1498
0
          if (!amqp_decode_8(encoded, &offset, &len) ||
1499
0
              !amqp_decode_bytes(encoded, &offset, &p->content_encoding, len))
1500
0
            return AMQP_STATUS_BAD_AMQP_DATA;
1501
0
        }
1502
0
      }
1503
0
      if (flags & AMQP_BASIC_HEADERS_FLAG) {
1504
0
        {
1505
0
          int res = amqp_decode_table(encoded, pool, &(p->headers), &offset);
1506
0
          if (res < 0) return res;
1507
0
        }
1508
0
      }
1509
0
      if (flags & AMQP_BASIC_DELIVERY_MODE_FLAG) {
1510
0
        if (!amqp_decode_8(encoded, &offset, &p->delivery_mode))
1511
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1512
0
      }
1513
0
      if (flags & AMQP_BASIC_PRIORITY_FLAG) {
1514
0
        if (!amqp_decode_8(encoded, &offset, &p->priority))
1515
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1516
0
      }
1517
0
      if (flags & AMQP_BASIC_CORRELATION_ID_FLAG) {
1518
0
        {
1519
0
          uint8_t len;
1520
0
          if (!amqp_decode_8(encoded, &offset, &len) ||
1521
0
              !amqp_decode_bytes(encoded, &offset, &p->correlation_id, len))
1522
0
            return AMQP_STATUS_BAD_AMQP_DATA;
1523
0
        }
1524
0
      }
1525
0
      if (flags & AMQP_BASIC_REPLY_TO_FLAG) {
1526
0
        {
1527
0
          uint8_t len;
1528
0
          if (!amqp_decode_8(encoded, &offset, &len) ||
1529
0
              !amqp_decode_bytes(encoded, &offset, &p->reply_to, len))
1530
0
            return AMQP_STATUS_BAD_AMQP_DATA;
1531
0
        }
1532
0
      }
1533
0
      if (flags & AMQP_BASIC_EXPIRATION_FLAG) {
1534
0
        {
1535
0
          uint8_t len;
1536
0
          if (!amqp_decode_8(encoded, &offset, &len) ||
1537
0
              !amqp_decode_bytes(encoded, &offset, &p->expiration, len))
1538
0
            return AMQP_STATUS_BAD_AMQP_DATA;
1539
0
        }
1540
0
      }
1541
0
      if (flags & AMQP_BASIC_MESSAGE_ID_FLAG) {
1542
0
        {
1543
0
          uint8_t len;
1544
0
          if (!amqp_decode_8(encoded, &offset, &len) ||
1545
0
              !amqp_decode_bytes(encoded, &offset, &p->message_id, len))
1546
0
            return AMQP_STATUS_BAD_AMQP_DATA;
1547
0
        }
1548
0
      }
1549
0
      if (flags & AMQP_BASIC_TIMESTAMP_FLAG) {
1550
0
        if (!amqp_decode_64(encoded, &offset, &p->timestamp))
1551
0
          return AMQP_STATUS_BAD_AMQP_DATA;
1552
0
      }
1553
0
      if (flags & AMQP_BASIC_TYPE_FLAG) {
1554
0
        {
1555
0
          uint8_t len;
1556
0
          if (!amqp_decode_8(encoded, &offset, &len) ||
1557
0
              !amqp_decode_bytes(encoded, &offset, &p->type, len))
1558
0
            return AMQP_STATUS_BAD_AMQP_DATA;
1559
0
        }
1560
0
      }
1561
0
      if (flags & AMQP_BASIC_USER_ID_FLAG) {
1562
0
        {
1563
0
          uint8_t len;
1564
0
          if (!amqp_decode_8(encoded, &offset, &len) ||
1565
0
              !amqp_decode_bytes(encoded, &offset, &p->user_id, len))
1566
0
            return AMQP_STATUS_BAD_AMQP_DATA;
1567
0
        }
1568
0
      }
1569
0
      if (flags & AMQP_BASIC_APP_ID_FLAG) {
1570
0
        {
1571
0
          uint8_t len;
1572
0
          if (!amqp_decode_8(encoded, &offset, &len) ||
1573
0
              !amqp_decode_bytes(encoded, &offset, &p->app_id, len))
1574
0
            return AMQP_STATUS_BAD_AMQP_DATA;
1575
0
        }
1576
0
      }
1577
0
      if (flags & AMQP_BASIC_CLUSTER_ID_FLAG) {
1578
0
        {
1579
0
          uint8_t len;
1580
0
          if (!amqp_decode_8(encoded, &offset, &len) ||
1581
0
              !amqp_decode_bytes(encoded, &offset, &p->cluster_id, len))
1582
0
            return AMQP_STATUS_BAD_AMQP_DATA;
1583
0
        }
1584
0
      }
1585
0
      *decoded = p;
1586
0
      return 0;
1587
0
    }
1588
0
    case 90: {
1589
0
      amqp_tx_properties_t *p = (amqp_tx_properties_t *)amqp_pool_alloc(
1590
0
          pool, sizeof(amqp_tx_properties_t));
1591
0
      if (p == NULL) {
1592
0
        return AMQP_STATUS_NO_MEMORY;
1593
0
      }
1594
0
      p->_flags = flags;
1595
0
      *decoded = p;
1596
0
      return 0;
1597
0
    }
1598
0
    case 85: {
1599
0
      amqp_confirm_properties_t *p =
1600
0
          (amqp_confirm_properties_t *)amqp_pool_alloc(
1601
0
              pool, sizeof(amqp_confirm_properties_t));
1602
0
      if (p == NULL) {
1603
0
        return AMQP_STATUS_NO_MEMORY;
1604
0
      }
1605
0
      p->_flags = flags;
1606
0
      *decoded = p;
1607
0
      return 0;
1608
0
    }
1609
0
    default:
1610
0
      return AMQP_STATUS_UNKNOWN_CLASS;
1611
0
  }
1612
0
}
1613
1614
int amqp_encode_method(amqp_method_number_t methodNumber, void *decoded,
1615
0
                       amqp_bytes_t encoded) {
1616
0
  size_t offset = 0;
1617
0
  uint8_t bit_buffer;
1618
1619
0
  switch (methodNumber) {
1620
0
    case AMQP_CONNECTION_START_METHOD: {
1621
0
      amqp_connection_start_t *m = (amqp_connection_start_t *)decoded;
1622
0
      if (!amqp_encode_8(encoded, &offset, m->version_major))
1623
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1624
0
      if (!amqp_encode_8(encoded, &offset, m->version_minor))
1625
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1626
0
      {
1627
0
        int res = amqp_encode_table(encoded, &(m->server_properties), &offset);
1628
0
        if (res < 0) return res;
1629
0
      }
1630
0
      if (UINT32_MAX < m->mechanisms.len ||
1631
0
          !amqp_encode_32(encoded, &offset, (uint32_t)m->mechanisms.len) ||
1632
0
          !amqp_encode_bytes(encoded, &offset, m->mechanisms))
1633
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1634
0
      if (UINT32_MAX < m->locales.len ||
1635
0
          !amqp_encode_32(encoded, &offset, (uint32_t)m->locales.len) ||
1636
0
          !amqp_encode_bytes(encoded, &offset, m->locales))
1637
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1638
0
      return (int)offset;
1639
0
    }
1640
0
    case AMQP_CONNECTION_START_OK_METHOD: {
1641
0
      amqp_connection_start_ok_t *m = (amqp_connection_start_ok_t *)decoded;
1642
0
      {
1643
0
        int res = amqp_encode_table(encoded, &(m->client_properties), &offset);
1644
0
        if (res < 0) return res;
1645
0
      }
1646
0
      if (UINT8_MAX < m->mechanism.len ||
1647
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->mechanism.len) ||
1648
0
          !amqp_encode_bytes(encoded, &offset, m->mechanism))
1649
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1650
0
      if (UINT32_MAX < m->response.len ||
1651
0
          !amqp_encode_32(encoded, &offset, (uint32_t)m->response.len) ||
1652
0
          !amqp_encode_bytes(encoded, &offset, m->response))
1653
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1654
0
      if (UINT8_MAX < m->locale.len ||
1655
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->locale.len) ||
1656
0
          !amqp_encode_bytes(encoded, &offset, m->locale))
1657
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1658
0
      return (int)offset;
1659
0
    }
1660
0
    case AMQP_CONNECTION_SECURE_METHOD: {
1661
0
      amqp_connection_secure_t *m = (amqp_connection_secure_t *)decoded;
1662
0
      if (UINT32_MAX < m->challenge.len ||
1663
0
          !amqp_encode_32(encoded, &offset, (uint32_t)m->challenge.len) ||
1664
0
          !amqp_encode_bytes(encoded, &offset, m->challenge))
1665
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1666
0
      return (int)offset;
1667
0
    }
1668
0
    case AMQP_CONNECTION_SECURE_OK_METHOD: {
1669
0
      amqp_connection_secure_ok_t *m = (amqp_connection_secure_ok_t *)decoded;
1670
0
      if (UINT32_MAX < m->response.len ||
1671
0
          !amqp_encode_32(encoded, &offset, (uint32_t)m->response.len) ||
1672
0
          !amqp_encode_bytes(encoded, &offset, m->response))
1673
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1674
0
      return (int)offset;
1675
0
    }
1676
0
    case AMQP_CONNECTION_TUNE_METHOD: {
1677
0
      amqp_connection_tune_t *m = (amqp_connection_tune_t *)decoded;
1678
0
      if (!amqp_encode_16(encoded, &offset, m->channel_max))
1679
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1680
0
      if (!amqp_encode_32(encoded, &offset, m->frame_max))
1681
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1682
0
      if (!amqp_encode_16(encoded, &offset, m->heartbeat))
1683
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1684
0
      return (int)offset;
1685
0
    }
1686
0
    case AMQP_CONNECTION_TUNE_OK_METHOD: {
1687
0
      amqp_connection_tune_ok_t *m = (amqp_connection_tune_ok_t *)decoded;
1688
0
      if (!amqp_encode_16(encoded, &offset, m->channel_max))
1689
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1690
0
      if (!amqp_encode_32(encoded, &offset, m->frame_max))
1691
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1692
0
      if (!amqp_encode_16(encoded, &offset, m->heartbeat))
1693
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1694
0
      return (int)offset;
1695
0
    }
1696
0
    case AMQP_CONNECTION_OPEN_METHOD: {
1697
0
      amqp_connection_open_t *m = (amqp_connection_open_t *)decoded;
1698
0
      if (UINT8_MAX < m->virtual_host.len ||
1699
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->virtual_host.len) ||
1700
0
          !amqp_encode_bytes(encoded, &offset, m->virtual_host))
1701
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1702
0
      if (UINT8_MAX < m->capabilities.len ||
1703
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->capabilities.len) ||
1704
0
          !amqp_encode_bytes(encoded, &offset, m->capabilities))
1705
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1706
0
      bit_buffer = 0;
1707
0
      if (m->insist) bit_buffer |= (1 << 0);
1708
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
1709
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1710
0
      return (int)offset;
1711
0
    }
1712
0
    case AMQP_CONNECTION_OPEN_OK_METHOD: {
1713
0
      amqp_connection_open_ok_t *m = (amqp_connection_open_ok_t *)decoded;
1714
0
      if (UINT8_MAX < m->known_hosts.len ||
1715
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->known_hosts.len) ||
1716
0
          !amqp_encode_bytes(encoded, &offset, m->known_hosts))
1717
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1718
0
      return (int)offset;
1719
0
    }
1720
0
    case AMQP_CONNECTION_CLOSE_METHOD: {
1721
0
      amqp_connection_close_t *m = (amqp_connection_close_t *)decoded;
1722
0
      if (!amqp_encode_16(encoded, &offset, m->reply_code))
1723
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1724
0
      if (UINT8_MAX < m->reply_text.len ||
1725
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->reply_text.len) ||
1726
0
          !amqp_encode_bytes(encoded, &offset, m->reply_text))
1727
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1728
0
      if (!amqp_encode_16(encoded, &offset, m->class_id))
1729
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1730
0
      if (!amqp_encode_16(encoded, &offset, m->method_id))
1731
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1732
0
      return (int)offset;
1733
0
    }
1734
0
    case AMQP_CONNECTION_CLOSE_OK_METHOD: {
1735
0
      return (int)offset;
1736
0
    }
1737
0
    case AMQP_CONNECTION_BLOCKED_METHOD: {
1738
0
      amqp_connection_blocked_t *m = (amqp_connection_blocked_t *)decoded;
1739
0
      if (UINT8_MAX < m->reason.len ||
1740
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->reason.len) ||
1741
0
          !amqp_encode_bytes(encoded, &offset, m->reason))
1742
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1743
0
      return (int)offset;
1744
0
    }
1745
0
    case AMQP_CONNECTION_UNBLOCKED_METHOD: {
1746
0
      return (int)offset;
1747
0
    }
1748
0
    case AMQP_CONNECTION_UPDATE_SECRET_METHOD: {
1749
0
      amqp_connection_update_secret_t *m =
1750
0
          (amqp_connection_update_secret_t *)decoded;
1751
0
      if (UINT32_MAX < m->new_secret.len ||
1752
0
          !amqp_encode_32(encoded, &offset, (uint32_t)m->new_secret.len) ||
1753
0
          !amqp_encode_bytes(encoded, &offset, m->new_secret))
1754
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1755
0
      if (UINT8_MAX < m->reason.len ||
1756
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->reason.len) ||
1757
0
          !amqp_encode_bytes(encoded, &offset, m->reason))
1758
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1759
0
      return (int)offset;
1760
0
    }
1761
0
    case AMQP_CONNECTION_UPDATE_SECRET_OK_METHOD: {
1762
0
      return (int)offset;
1763
0
    }
1764
0
    case AMQP_CHANNEL_OPEN_METHOD: {
1765
0
      amqp_channel_open_t *m = (amqp_channel_open_t *)decoded;
1766
0
      if (UINT8_MAX < m->out_of_band.len ||
1767
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->out_of_band.len) ||
1768
0
          !amqp_encode_bytes(encoded, &offset, m->out_of_band))
1769
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1770
0
      return (int)offset;
1771
0
    }
1772
0
    case AMQP_CHANNEL_OPEN_OK_METHOD: {
1773
0
      amqp_channel_open_ok_t *m = (amqp_channel_open_ok_t *)decoded;
1774
0
      if (UINT32_MAX < m->channel_id.len ||
1775
0
          !amqp_encode_32(encoded, &offset, (uint32_t)m->channel_id.len) ||
1776
0
          !amqp_encode_bytes(encoded, &offset, m->channel_id))
1777
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1778
0
      return (int)offset;
1779
0
    }
1780
0
    case AMQP_CHANNEL_FLOW_METHOD: {
1781
0
      amqp_channel_flow_t *m = (amqp_channel_flow_t *)decoded;
1782
0
      bit_buffer = 0;
1783
0
      if (m->active) bit_buffer |= (1 << 0);
1784
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
1785
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1786
0
      return (int)offset;
1787
0
    }
1788
0
    case AMQP_CHANNEL_FLOW_OK_METHOD: {
1789
0
      amqp_channel_flow_ok_t *m = (amqp_channel_flow_ok_t *)decoded;
1790
0
      bit_buffer = 0;
1791
0
      if (m->active) bit_buffer |= (1 << 0);
1792
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
1793
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1794
0
      return (int)offset;
1795
0
    }
1796
0
    case AMQP_CHANNEL_CLOSE_METHOD: {
1797
0
      amqp_channel_close_t *m = (amqp_channel_close_t *)decoded;
1798
0
      if (!amqp_encode_16(encoded, &offset, m->reply_code))
1799
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1800
0
      if (UINT8_MAX < m->reply_text.len ||
1801
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->reply_text.len) ||
1802
0
          !amqp_encode_bytes(encoded, &offset, m->reply_text))
1803
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1804
0
      if (!amqp_encode_16(encoded, &offset, m->class_id))
1805
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1806
0
      if (!amqp_encode_16(encoded, &offset, m->method_id))
1807
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1808
0
      return (int)offset;
1809
0
    }
1810
0
    case AMQP_CHANNEL_CLOSE_OK_METHOD: {
1811
0
      return (int)offset;
1812
0
    }
1813
0
    case AMQP_ACCESS_REQUEST_METHOD: {
1814
0
      amqp_access_request_t *m = (amqp_access_request_t *)decoded;
1815
0
      if (UINT8_MAX < m->realm.len ||
1816
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->realm.len) ||
1817
0
          !amqp_encode_bytes(encoded, &offset, m->realm))
1818
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1819
0
      bit_buffer = 0;
1820
0
      if (m->exclusive) bit_buffer |= (1 << 0);
1821
0
      if (m->passive) bit_buffer |= (1 << 1);
1822
0
      if (m->active) bit_buffer |= (1 << 2);
1823
0
      if (m->write) bit_buffer |= (1 << 3);
1824
0
      if (m->read) bit_buffer |= (1 << 4);
1825
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
1826
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1827
0
      return (int)offset;
1828
0
    }
1829
0
    case AMQP_ACCESS_REQUEST_OK_METHOD: {
1830
0
      amqp_access_request_ok_t *m = (amqp_access_request_ok_t *)decoded;
1831
0
      if (!amqp_encode_16(encoded, &offset, m->ticket))
1832
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1833
0
      return (int)offset;
1834
0
    }
1835
0
    case AMQP_EXCHANGE_DECLARE_METHOD: {
1836
0
      amqp_exchange_declare_t *m = (amqp_exchange_declare_t *)decoded;
1837
0
      if (!amqp_encode_16(encoded, &offset, m->ticket))
1838
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1839
0
      if (UINT8_MAX < m->exchange.len ||
1840
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len) ||
1841
0
          !amqp_encode_bytes(encoded, &offset, m->exchange))
1842
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1843
0
      if (UINT8_MAX < m->type.len ||
1844
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->type.len) ||
1845
0
          !amqp_encode_bytes(encoded, &offset, m->type))
1846
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1847
0
      bit_buffer = 0;
1848
0
      if (m->passive) bit_buffer |= (1 << 0);
1849
0
      if (m->durable) bit_buffer |= (1 << 1);
1850
0
      if (m->auto_delete) bit_buffer |= (1 << 2);
1851
0
      if (m->internal) bit_buffer |= (1 << 3);
1852
0
      if (m->nowait) bit_buffer |= (1 << 4);
1853
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
1854
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1855
0
      {
1856
0
        int res = amqp_encode_table(encoded, &(m->arguments), &offset);
1857
0
        if (res < 0) return res;
1858
0
      }
1859
0
      return (int)offset;
1860
0
    }
1861
0
    case AMQP_EXCHANGE_DECLARE_OK_METHOD: {
1862
0
      return (int)offset;
1863
0
    }
1864
0
    case AMQP_EXCHANGE_DELETE_METHOD: {
1865
0
      amqp_exchange_delete_t *m = (amqp_exchange_delete_t *)decoded;
1866
0
      if (!amqp_encode_16(encoded, &offset, m->ticket))
1867
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1868
0
      if (UINT8_MAX < m->exchange.len ||
1869
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len) ||
1870
0
          !amqp_encode_bytes(encoded, &offset, m->exchange))
1871
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1872
0
      bit_buffer = 0;
1873
0
      if (m->if_unused) bit_buffer |= (1 << 0);
1874
0
      if (m->nowait) bit_buffer |= (1 << 1);
1875
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
1876
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1877
0
      return (int)offset;
1878
0
    }
1879
0
    case AMQP_EXCHANGE_DELETE_OK_METHOD: {
1880
0
      return (int)offset;
1881
0
    }
1882
0
    case AMQP_EXCHANGE_BIND_METHOD: {
1883
0
      amqp_exchange_bind_t *m = (amqp_exchange_bind_t *)decoded;
1884
0
      if (!amqp_encode_16(encoded, &offset, m->ticket))
1885
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1886
0
      if (UINT8_MAX < m->destination.len ||
1887
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->destination.len) ||
1888
0
          !amqp_encode_bytes(encoded, &offset, m->destination))
1889
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1890
0
      if (UINT8_MAX < m->source.len ||
1891
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->source.len) ||
1892
0
          !amqp_encode_bytes(encoded, &offset, m->source))
1893
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1894
0
      if (UINT8_MAX < m->routing_key.len ||
1895
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len) ||
1896
0
          !amqp_encode_bytes(encoded, &offset, m->routing_key))
1897
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1898
0
      bit_buffer = 0;
1899
0
      if (m->nowait) bit_buffer |= (1 << 0);
1900
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
1901
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1902
0
      {
1903
0
        int res = amqp_encode_table(encoded, &(m->arguments), &offset);
1904
0
        if (res < 0) return res;
1905
0
      }
1906
0
      return (int)offset;
1907
0
    }
1908
0
    case AMQP_EXCHANGE_BIND_OK_METHOD: {
1909
0
      return (int)offset;
1910
0
    }
1911
0
    case AMQP_EXCHANGE_UNBIND_METHOD: {
1912
0
      amqp_exchange_unbind_t *m = (amqp_exchange_unbind_t *)decoded;
1913
0
      if (!amqp_encode_16(encoded, &offset, m->ticket))
1914
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1915
0
      if (UINT8_MAX < m->destination.len ||
1916
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->destination.len) ||
1917
0
          !amqp_encode_bytes(encoded, &offset, m->destination))
1918
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1919
0
      if (UINT8_MAX < m->source.len ||
1920
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->source.len) ||
1921
0
          !amqp_encode_bytes(encoded, &offset, m->source))
1922
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1923
0
      if (UINT8_MAX < m->routing_key.len ||
1924
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len) ||
1925
0
          !amqp_encode_bytes(encoded, &offset, m->routing_key))
1926
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1927
0
      bit_buffer = 0;
1928
0
      if (m->nowait) bit_buffer |= (1 << 0);
1929
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
1930
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1931
0
      {
1932
0
        int res = amqp_encode_table(encoded, &(m->arguments), &offset);
1933
0
        if (res < 0) return res;
1934
0
      }
1935
0
      return (int)offset;
1936
0
    }
1937
0
    case AMQP_EXCHANGE_UNBIND_OK_METHOD: {
1938
0
      return (int)offset;
1939
0
    }
1940
0
    case AMQP_QUEUE_DECLARE_METHOD: {
1941
0
      amqp_queue_declare_t *m = (amqp_queue_declare_t *)decoded;
1942
0
      if (!amqp_encode_16(encoded, &offset, m->ticket))
1943
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1944
0
      if (UINT8_MAX < m->queue.len ||
1945
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len) ||
1946
0
          !amqp_encode_bytes(encoded, &offset, m->queue))
1947
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1948
0
      bit_buffer = 0;
1949
0
      if (m->passive) bit_buffer |= (1 << 0);
1950
0
      if (m->durable) bit_buffer |= (1 << 1);
1951
0
      if (m->exclusive) bit_buffer |= (1 << 2);
1952
0
      if (m->auto_delete) bit_buffer |= (1 << 3);
1953
0
      if (m->nowait) bit_buffer |= (1 << 4);
1954
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
1955
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1956
0
      {
1957
0
        int res = amqp_encode_table(encoded, &(m->arguments), &offset);
1958
0
        if (res < 0) return res;
1959
0
      }
1960
0
      return (int)offset;
1961
0
    }
1962
0
    case AMQP_QUEUE_DECLARE_OK_METHOD: {
1963
0
      amqp_queue_declare_ok_t *m = (amqp_queue_declare_ok_t *)decoded;
1964
0
      if (UINT8_MAX < m->queue.len ||
1965
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len) ||
1966
0
          !amqp_encode_bytes(encoded, &offset, m->queue))
1967
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1968
0
      if (!amqp_encode_32(encoded, &offset, m->message_count))
1969
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1970
0
      if (!amqp_encode_32(encoded, &offset, m->consumer_count))
1971
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1972
0
      return (int)offset;
1973
0
    }
1974
0
    case AMQP_QUEUE_BIND_METHOD: {
1975
0
      amqp_queue_bind_t *m = (amqp_queue_bind_t *)decoded;
1976
0
      if (!amqp_encode_16(encoded, &offset, m->ticket))
1977
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1978
0
      if (UINT8_MAX < m->queue.len ||
1979
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len) ||
1980
0
          !amqp_encode_bytes(encoded, &offset, m->queue))
1981
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1982
0
      if (UINT8_MAX < m->exchange.len ||
1983
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len) ||
1984
0
          !amqp_encode_bytes(encoded, &offset, m->exchange))
1985
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1986
0
      if (UINT8_MAX < m->routing_key.len ||
1987
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len) ||
1988
0
          !amqp_encode_bytes(encoded, &offset, m->routing_key))
1989
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1990
0
      bit_buffer = 0;
1991
0
      if (m->nowait) bit_buffer |= (1 << 0);
1992
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
1993
0
        return AMQP_STATUS_BAD_AMQP_DATA;
1994
0
      {
1995
0
        int res = amqp_encode_table(encoded, &(m->arguments), &offset);
1996
0
        if (res < 0) return res;
1997
0
      }
1998
0
      return (int)offset;
1999
0
    }
2000
0
    case AMQP_QUEUE_BIND_OK_METHOD: {
2001
0
      return (int)offset;
2002
0
    }
2003
0
    case AMQP_QUEUE_PURGE_METHOD: {
2004
0
      amqp_queue_purge_t *m = (amqp_queue_purge_t *)decoded;
2005
0
      if (!amqp_encode_16(encoded, &offset, m->ticket))
2006
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2007
0
      if (UINT8_MAX < m->queue.len ||
2008
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len) ||
2009
0
          !amqp_encode_bytes(encoded, &offset, m->queue))
2010
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2011
0
      bit_buffer = 0;
2012
0
      if (m->nowait) bit_buffer |= (1 << 0);
2013
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2014
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2015
0
      return (int)offset;
2016
0
    }
2017
0
    case AMQP_QUEUE_PURGE_OK_METHOD: {
2018
0
      amqp_queue_purge_ok_t *m = (amqp_queue_purge_ok_t *)decoded;
2019
0
      if (!amqp_encode_32(encoded, &offset, m->message_count))
2020
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2021
0
      return (int)offset;
2022
0
    }
2023
0
    case AMQP_QUEUE_DELETE_METHOD: {
2024
0
      amqp_queue_delete_t *m = (amqp_queue_delete_t *)decoded;
2025
0
      if (!amqp_encode_16(encoded, &offset, m->ticket))
2026
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2027
0
      if (UINT8_MAX < m->queue.len ||
2028
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len) ||
2029
0
          !amqp_encode_bytes(encoded, &offset, m->queue))
2030
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2031
0
      bit_buffer = 0;
2032
0
      if (m->if_unused) bit_buffer |= (1 << 0);
2033
0
      if (m->if_empty) bit_buffer |= (1 << 1);
2034
0
      if (m->nowait) bit_buffer |= (1 << 2);
2035
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2036
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2037
0
      return (int)offset;
2038
0
    }
2039
0
    case AMQP_QUEUE_DELETE_OK_METHOD: {
2040
0
      amqp_queue_delete_ok_t *m = (amqp_queue_delete_ok_t *)decoded;
2041
0
      if (!amqp_encode_32(encoded, &offset, m->message_count))
2042
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2043
0
      return (int)offset;
2044
0
    }
2045
0
    case AMQP_QUEUE_UNBIND_METHOD: {
2046
0
      amqp_queue_unbind_t *m = (amqp_queue_unbind_t *)decoded;
2047
0
      if (!amqp_encode_16(encoded, &offset, m->ticket))
2048
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2049
0
      if (UINT8_MAX < m->queue.len ||
2050
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len) ||
2051
0
          !amqp_encode_bytes(encoded, &offset, m->queue))
2052
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2053
0
      if (UINT8_MAX < m->exchange.len ||
2054
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len) ||
2055
0
          !amqp_encode_bytes(encoded, &offset, m->exchange))
2056
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2057
0
      if (UINT8_MAX < m->routing_key.len ||
2058
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len) ||
2059
0
          !amqp_encode_bytes(encoded, &offset, m->routing_key))
2060
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2061
0
      {
2062
0
        int res = amqp_encode_table(encoded, &(m->arguments), &offset);
2063
0
        if (res < 0) return res;
2064
0
      }
2065
0
      return (int)offset;
2066
0
    }
2067
0
    case AMQP_QUEUE_UNBIND_OK_METHOD: {
2068
0
      return (int)offset;
2069
0
    }
2070
0
    case AMQP_BASIC_QOS_METHOD: {
2071
0
      amqp_basic_qos_t *m = (amqp_basic_qos_t *)decoded;
2072
0
      if (!amqp_encode_32(encoded, &offset, m->prefetch_size))
2073
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2074
0
      if (!amqp_encode_16(encoded, &offset, m->prefetch_count))
2075
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2076
0
      bit_buffer = 0;
2077
0
      if (m->global) bit_buffer |= (1 << 0);
2078
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2079
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2080
0
      return (int)offset;
2081
0
    }
2082
0
    case AMQP_BASIC_QOS_OK_METHOD: {
2083
0
      return (int)offset;
2084
0
    }
2085
0
    case AMQP_BASIC_CONSUME_METHOD: {
2086
0
      amqp_basic_consume_t *m = (amqp_basic_consume_t *)decoded;
2087
0
      if (!amqp_encode_16(encoded, &offset, m->ticket))
2088
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2089
0
      if (UINT8_MAX < m->queue.len ||
2090
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len) ||
2091
0
          !amqp_encode_bytes(encoded, &offset, m->queue))
2092
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2093
0
      if (UINT8_MAX < m->consumer_tag.len ||
2094
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->consumer_tag.len) ||
2095
0
          !amqp_encode_bytes(encoded, &offset, m->consumer_tag))
2096
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2097
0
      bit_buffer = 0;
2098
0
      if (m->no_local) bit_buffer |= (1 << 0);
2099
0
      if (m->no_ack) bit_buffer |= (1 << 1);
2100
0
      if (m->exclusive) bit_buffer |= (1 << 2);
2101
0
      if (m->nowait) bit_buffer |= (1 << 3);
2102
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2103
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2104
0
      {
2105
0
        int res = amqp_encode_table(encoded, &(m->arguments), &offset);
2106
0
        if (res < 0) return res;
2107
0
      }
2108
0
      return (int)offset;
2109
0
    }
2110
0
    case AMQP_BASIC_CONSUME_OK_METHOD: {
2111
0
      amqp_basic_consume_ok_t *m = (amqp_basic_consume_ok_t *)decoded;
2112
0
      if (UINT8_MAX < m->consumer_tag.len ||
2113
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->consumer_tag.len) ||
2114
0
          !amqp_encode_bytes(encoded, &offset, m->consumer_tag))
2115
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2116
0
      return (int)offset;
2117
0
    }
2118
0
    case AMQP_BASIC_CANCEL_METHOD: {
2119
0
      amqp_basic_cancel_t *m = (amqp_basic_cancel_t *)decoded;
2120
0
      if (UINT8_MAX < m->consumer_tag.len ||
2121
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->consumer_tag.len) ||
2122
0
          !amqp_encode_bytes(encoded, &offset, m->consumer_tag))
2123
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2124
0
      bit_buffer = 0;
2125
0
      if (m->nowait) bit_buffer |= (1 << 0);
2126
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2127
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2128
0
      return (int)offset;
2129
0
    }
2130
0
    case AMQP_BASIC_CANCEL_OK_METHOD: {
2131
0
      amqp_basic_cancel_ok_t *m = (amqp_basic_cancel_ok_t *)decoded;
2132
0
      if (UINT8_MAX < m->consumer_tag.len ||
2133
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->consumer_tag.len) ||
2134
0
          !amqp_encode_bytes(encoded, &offset, m->consumer_tag))
2135
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2136
0
      return (int)offset;
2137
0
    }
2138
0
    case AMQP_BASIC_PUBLISH_METHOD: {
2139
0
      amqp_basic_publish_t *m = (amqp_basic_publish_t *)decoded;
2140
0
      if (!amqp_encode_16(encoded, &offset, m->ticket))
2141
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2142
0
      if (UINT8_MAX < m->exchange.len ||
2143
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len) ||
2144
0
          !amqp_encode_bytes(encoded, &offset, m->exchange))
2145
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2146
0
      if (UINT8_MAX < m->routing_key.len ||
2147
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len) ||
2148
0
          !amqp_encode_bytes(encoded, &offset, m->routing_key))
2149
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2150
0
      bit_buffer = 0;
2151
0
      if (m->mandatory) bit_buffer |= (1 << 0);
2152
0
      if (m->immediate) bit_buffer |= (1 << 1);
2153
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2154
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2155
0
      return (int)offset;
2156
0
    }
2157
0
    case AMQP_BASIC_RETURN_METHOD: {
2158
0
      amqp_basic_return_t *m = (amqp_basic_return_t *)decoded;
2159
0
      if (!amqp_encode_16(encoded, &offset, m->reply_code))
2160
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2161
0
      if (UINT8_MAX < m->reply_text.len ||
2162
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->reply_text.len) ||
2163
0
          !amqp_encode_bytes(encoded, &offset, m->reply_text))
2164
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2165
0
      if (UINT8_MAX < m->exchange.len ||
2166
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len) ||
2167
0
          !amqp_encode_bytes(encoded, &offset, m->exchange))
2168
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2169
0
      if (UINT8_MAX < m->routing_key.len ||
2170
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len) ||
2171
0
          !amqp_encode_bytes(encoded, &offset, m->routing_key))
2172
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2173
0
      return (int)offset;
2174
0
    }
2175
0
    case AMQP_BASIC_DELIVER_METHOD: {
2176
0
      amqp_basic_deliver_t *m = (amqp_basic_deliver_t *)decoded;
2177
0
      if (UINT8_MAX < m->consumer_tag.len ||
2178
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->consumer_tag.len) ||
2179
0
          !amqp_encode_bytes(encoded, &offset, m->consumer_tag))
2180
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2181
0
      if (!amqp_encode_64(encoded, &offset, m->delivery_tag))
2182
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2183
0
      bit_buffer = 0;
2184
0
      if (m->redelivered) bit_buffer |= (1 << 0);
2185
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2186
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2187
0
      if (UINT8_MAX < m->exchange.len ||
2188
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len) ||
2189
0
          !amqp_encode_bytes(encoded, &offset, m->exchange))
2190
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2191
0
      if (UINT8_MAX < m->routing_key.len ||
2192
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len) ||
2193
0
          !amqp_encode_bytes(encoded, &offset, m->routing_key))
2194
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2195
0
      return (int)offset;
2196
0
    }
2197
0
    case AMQP_BASIC_GET_METHOD: {
2198
0
      amqp_basic_get_t *m = (amqp_basic_get_t *)decoded;
2199
0
      if (!amqp_encode_16(encoded, &offset, m->ticket))
2200
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2201
0
      if (UINT8_MAX < m->queue.len ||
2202
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->queue.len) ||
2203
0
          !amqp_encode_bytes(encoded, &offset, m->queue))
2204
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2205
0
      bit_buffer = 0;
2206
0
      if (m->no_ack) bit_buffer |= (1 << 0);
2207
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2208
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2209
0
      return (int)offset;
2210
0
    }
2211
0
    case AMQP_BASIC_GET_OK_METHOD: {
2212
0
      amqp_basic_get_ok_t *m = (amqp_basic_get_ok_t *)decoded;
2213
0
      if (!amqp_encode_64(encoded, &offset, m->delivery_tag))
2214
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2215
0
      bit_buffer = 0;
2216
0
      if (m->redelivered) bit_buffer |= (1 << 0);
2217
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2218
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2219
0
      if (UINT8_MAX < m->exchange.len ||
2220
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->exchange.len) ||
2221
0
          !amqp_encode_bytes(encoded, &offset, m->exchange))
2222
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2223
0
      if (UINT8_MAX < m->routing_key.len ||
2224
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->routing_key.len) ||
2225
0
          !amqp_encode_bytes(encoded, &offset, m->routing_key))
2226
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2227
0
      if (!amqp_encode_32(encoded, &offset, m->message_count))
2228
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2229
0
      return (int)offset;
2230
0
    }
2231
0
    case AMQP_BASIC_GET_EMPTY_METHOD: {
2232
0
      amqp_basic_get_empty_t *m = (amqp_basic_get_empty_t *)decoded;
2233
0
      if (UINT8_MAX < m->cluster_id.len ||
2234
0
          !amqp_encode_8(encoded, &offset, (uint8_t)m->cluster_id.len) ||
2235
0
          !amqp_encode_bytes(encoded, &offset, m->cluster_id))
2236
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2237
0
      return (int)offset;
2238
0
    }
2239
0
    case AMQP_BASIC_ACK_METHOD: {
2240
0
      amqp_basic_ack_t *m = (amqp_basic_ack_t *)decoded;
2241
0
      if (!amqp_encode_64(encoded, &offset, m->delivery_tag))
2242
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2243
0
      bit_buffer = 0;
2244
0
      if (m->multiple) bit_buffer |= (1 << 0);
2245
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2246
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2247
0
      return (int)offset;
2248
0
    }
2249
0
    case AMQP_BASIC_REJECT_METHOD: {
2250
0
      amqp_basic_reject_t *m = (amqp_basic_reject_t *)decoded;
2251
0
      if (!amqp_encode_64(encoded, &offset, m->delivery_tag))
2252
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2253
0
      bit_buffer = 0;
2254
0
      if (m->requeue) bit_buffer |= (1 << 0);
2255
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2256
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2257
0
      return (int)offset;
2258
0
    }
2259
0
    case AMQP_BASIC_RECOVER_ASYNC_METHOD: {
2260
0
      amqp_basic_recover_async_t *m = (amqp_basic_recover_async_t *)decoded;
2261
0
      bit_buffer = 0;
2262
0
      if (m->requeue) bit_buffer |= (1 << 0);
2263
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2264
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2265
0
      return (int)offset;
2266
0
    }
2267
0
    case AMQP_BASIC_RECOVER_METHOD: {
2268
0
      amqp_basic_recover_t *m = (amqp_basic_recover_t *)decoded;
2269
0
      bit_buffer = 0;
2270
0
      if (m->requeue) bit_buffer |= (1 << 0);
2271
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2272
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2273
0
      return (int)offset;
2274
0
    }
2275
0
    case AMQP_BASIC_RECOVER_OK_METHOD: {
2276
0
      return (int)offset;
2277
0
    }
2278
0
    case AMQP_BASIC_NACK_METHOD: {
2279
0
      amqp_basic_nack_t *m = (amqp_basic_nack_t *)decoded;
2280
0
      if (!amqp_encode_64(encoded, &offset, m->delivery_tag))
2281
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2282
0
      bit_buffer = 0;
2283
0
      if (m->multiple) bit_buffer |= (1 << 0);
2284
0
      if (m->requeue) bit_buffer |= (1 << 1);
2285
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2286
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2287
0
      return (int)offset;
2288
0
    }
2289
0
    case AMQP_TX_SELECT_METHOD: {
2290
0
      return (int)offset;
2291
0
    }
2292
0
    case AMQP_TX_SELECT_OK_METHOD: {
2293
0
      return (int)offset;
2294
0
    }
2295
0
    case AMQP_TX_COMMIT_METHOD: {
2296
0
      return (int)offset;
2297
0
    }
2298
0
    case AMQP_TX_COMMIT_OK_METHOD: {
2299
0
      return (int)offset;
2300
0
    }
2301
0
    case AMQP_TX_ROLLBACK_METHOD: {
2302
0
      return (int)offset;
2303
0
    }
2304
0
    case AMQP_TX_ROLLBACK_OK_METHOD: {
2305
0
      return (int)offset;
2306
0
    }
2307
0
    case AMQP_CONFIRM_SELECT_METHOD: {
2308
0
      amqp_confirm_select_t *m = (amqp_confirm_select_t *)decoded;
2309
0
      bit_buffer = 0;
2310
0
      if (m->nowait) bit_buffer |= (1 << 0);
2311
0
      if (!amqp_encode_8(encoded, &offset, bit_buffer))
2312
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2313
0
      return (int)offset;
2314
0
    }
2315
0
    case AMQP_CONFIRM_SELECT_OK_METHOD: {
2316
0
      return (int)offset;
2317
0
    }
2318
0
    default:
2319
0
      return AMQP_STATUS_UNKNOWN_METHOD;
2320
0
  }
2321
0
}
2322
2323
int amqp_encode_properties(uint16_t class_id, void *decoded,
2324
0
                           amqp_bytes_t encoded) {
2325
0
  size_t offset = 0;
2326
2327
  /* Cheat, and get the flags out generically, relying on the
2328
     similarity of structure between classes */
2329
0
  amqp_flags_t flags = *(amqp_flags_t *)decoded; /* cheating! */
2330
2331
0
  {
2332
    /* We take a copy of flags to avoid destroying it, as it is used
2333
       in the autogenerated code below. */
2334
0
    amqp_flags_t remaining_flags = flags;
2335
0
    do {
2336
0
      amqp_flags_t remainder = remaining_flags >> 16;
2337
0
      uint16_t partial_flags = remaining_flags & 0xFFFE;
2338
0
      if (remainder != 0) {
2339
0
        partial_flags |= 1;
2340
0
      }
2341
0
      if (!amqp_encode_16(encoded, &offset, partial_flags))
2342
0
        return AMQP_STATUS_BAD_AMQP_DATA;
2343
0
      remaining_flags = remainder;
2344
0
    } while (remaining_flags != 0);
2345
0
  }
2346
2347
0
  switch (class_id) {
2348
0
    case 10: {
2349
0
      return (int)offset;
2350
0
    }
2351
0
    case 20: {
2352
0
      return (int)offset;
2353
0
    }
2354
0
    case 30: {
2355
0
      return (int)offset;
2356
0
    }
2357
0
    case 40: {
2358
0
      return (int)offset;
2359
0
    }
2360
0
    case 50: {
2361
0
      return (int)offset;
2362
0
    }
2363
0
    case 60: {
2364
0
      amqp_basic_properties_t *p = (amqp_basic_properties_t *)decoded;
2365
0
      if (flags & AMQP_BASIC_CONTENT_TYPE_FLAG) {
2366
0
        if (UINT8_MAX < p->content_type.len ||
2367
0
            !amqp_encode_8(encoded, &offset, (uint8_t)p->content_type.len) ||
2368
0
            !amqp_encode_bytes(encoded, &offset, p->content_type))
2369
0
          return AMQP_STATUS_BAD_AMQP_DATA;
2370
0
      }
2371
0
      if (flags & AMQP_BASIC_CONTENT_ENCODING_FLAG) {
2372
0
        if (UINT8_MAX < p->content_encoding.len ||
2373
0
            !amqp_encode_8(encoded, &offset,
2374
0
                           (uint8_t)p->content_encoding.len) ||
2375
0
            !amqp_encode_bytes(encoded, &offset, p->content_encoding))
2376
0
          return AMQP_STATUS_BAD_AMQP_DATA;
2377
0
      }
2378
0
      if (flags & AMQP_BASIC_HEADERS_FLAG) {
2379
0
        {
2380
0
          int res = amqp_encode_table(encoded, &(p->headers), &offset);
2381
0
          if (res < 0) return res;
2382
0
        }
2383
0
      }
2384
0
      if (flags & AMQP_BASIC_DELIVERY_MODE_FLAG) {
2385
0
        if (!amqp_encode_8(encoded, &offset, p->delivery_mode))
2386
0
          return AMQP_STATUS_BAD_AMQP_DATA;
2387
0
      }
2388
0
      if (flags & AMQP_BASIC_PRIORITY_FLAG) {
2389
0
        if (!amqp_encode_8(encoded, &offset, p->priority))
2390
0
          return AMQP_STATUS_BAD_AMQP_DATA;
2391
0
      }
2392
0
      if (flags & AMQP_BASIC_CORRELATION_ID_FLAG) {
2393
0
        if (UINT8_MAX < p->correlation_id.len ||
2394
0
            !amqp_encode_8(encoded, &offset, (uint8_t)p->correlation_id.len) ||
2395
0
            !amqp_encode_bytes(encoded, &offset, p->correlation_id))
2396
0
          return AMQP_STATUS_BAD_AMQP_DATA;
2397
0
      }
2398
0
      if (flags & AMQP_BASIC_REPLY_TO_FLAG) {
2399
0
        if (UINT8_MAX < p->reply_to.len ||
2400
0
            !amqp_encode_8(encoded, &offset, (uint8_t)p->reply_to.len) ||
2401
0
            !amqp_encode_bytes(encoded, &offset, p->reply_to))
2402
0
          return AMQP_STATUS_BAD_AMQP_DATA;
2403
0
      }
2404
0
      if (flags & AMQP_BASIC_EXPIRATION_FLAG) {
2405
0
        if (UINT8_MAX < p->expiration.len ||
2406
0
            !amqp_encode_8(encoded, &offset, (uint8_t)p->expiration.len) ||
2407
0
            !amqp_encode_bytes(encoded, &offset, p->expiration))
2408
0
          return AMQP_STATUS_BAD_AMQP_DATA;
2409
0
      }
2410
0
      if (flags & AMQP_BASIC_MESSAGE_ID_FLAG) {
2411
0
        if (UINT8_MAX < p->message_id.len ||
2412
0
            !amqp_encode_8(encoded, &offset, (uint8_t)p->message_id.len) ||
2413
0
            !amqp_encode_bytes(encoded, &offset, p->message_id))
2414
0
          return AMQP_STATUS_BAD_AMQP_DATA;
2415
0
      }
2416
0
      if (flags & AMQP_BASIC_TIMESTAMP_FLAG) {
2417
0
        if (!amqp_encode_64(encoded, &offset, p->timestamp))
2418
0
          return AMQP_STATUS_BAD_AMQP_DATA;
2419
0
      }
2420
0
      if (flags & AMQP_BASIC_TYPE_FLAG) {
2421
0
        if (UINT8_MAX < p->type.len ||
2422
0
            !amqp_encode_8(encoded, &offset, (uint8_t)p->type.len) ||
2423
0
            !amqp_encode_bytes(encoded, &offset, p->type))
2424
0
          return AMQP_STATUS_BAD_AMQP_DATA;
2425
0
      }
2426
0
      if (flags & AMQP_BASIC_USER_ID_FLAG) {
2427
0
        if (UINT8_MAX < p->user_id.len ||
2428
0
            !amqp_encode_8(encoded, &offset, (uint8_t)p->user_id.len) ||
2429
0
            !amqp_encode_bytes(encoded, &offset, p->user_id))
2430
0
          return AMQP_STATUS_BAD_AMQP_DATA;
2431
0
      }
2432
0
      if (flags & AMQP_BASIC_APP_ID_FLAG) {
2433
0
        if (UINT8_MAX < p->app_id.len ||
2434
0
            !amqp_encode_8(encoded, &offset, (uint8_t)p->app_id.len) ||
2435
0
            !amqp_encode_bytes(encoded, &offset, p->app_id))
2436
0
          return AMQP_STATUS_BAD_AMQP_DATA;
2437
0
      }
2438
0
      if (flags & AMQP_BASIC_CLUSTER_ID_FLAG) {
2439
0
        if (UINT8_MAX < p->cluster_id.len ||
2440
0
            !amqp_encode_8(encoded, &offset, (uint8_t)p->cluster_id.len) ||
2441
0
            !amqp_encode_bytes(encoded, &offset, p->cluster_id))
2442
0
          return AMQP_STATUS_BAD_AMQP_DATA;
2443
0
      }
2444
0
      return (int)offset;
2445
0
    }
2446
0
    case 90: {
2447
0
      return (int)offset;
2448
0
    }
2449
0
    case 85: {
2450
0
      return (int)offset;
2451
0
    }
2452
0
    default:
2453
0
      return AMQP_STATUS_UNKNOWN_CLASS;
2454
0
  }
2455
0
}
2456
2457
/**
2458
 * amqp_connection_update_secret
2459
 *
2460
 * @param [in] state connection state
2461
 * @param [in] channel the channel to do the RPC on
2462
 * @param [in] new_secret new_secret
2463
 * @param [in] reason reason
2464
 * @returns amqp_connection_update_secret_ok_t
2465
 */
2466
AMQP_EXPORT
2467
amqp_connection_update_secret_ok_t *AMQP_CALL amqp_connection_update_secret(
2468
    amqp_connection_state_t state, amqp_channel_t channel,
2469
0
    amqp_bytes_t new_secret, amqp_bytes_t reason) {
2470
0
  amqp_connection_update_secret_t req;
2471
0
  req.new_secret = new_secret;
2472
0
  req.reason = reason;
2473
2474
0
  return amqp_simple_rpc_decoded(state, channel,
2475
0
                                 AMQP_CONNECTION_UPDATE_SECRET_METHOD,
2476
0
                                 AMQP_CONNECTION_UPDATE_SECRET_OK_METHOD, &req);
2477
0
}
2478
2479
/**
2480
 * amqp_channel_open
2481
 *
2482
 * @param [in] state connection state
2483
 * @param [in] channel the channel to do the RPC on
2484
 * @returns amqp_channel_open_ok_t
2485
 */
2486
AMQP_EXPORT
2487
amqp_channel_open_ok_t *AMQP_CALL
2488
0
    amqp_channel_open(amqp_connection_state_t state, amqp_channel_t channel) {
2489
0
  amqp_channel_open_t req;
2490
0
  req.out_of_band = amqp_empty_bytes;
2491
2492
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_CHANNEL_OPEN_METHOD,
2493
0
                                 AMQP_CHANNEL_OPEN_OK_METHOD, &req);
2494
0
}
2495
2496
/**
2497
 * amqp_channel_flow
2498
 *
2499
 * @param [in] state connection state
2500
 * @param [in] channel the channel to do the RPC on
2501
 * @param [in] active active
2502
 * @returns amqp_channel_flow_ok_t
2503
 */
2504
AMQP_EXPORT
2505
amqp_channel_flow_ok_t *AMQP_CALL
2506
    amqp_channel_flow(amqp_connection_state_t state, amqp_channel_t channel,
2507
0
                      amqp_boolean_t active) {
2508
0
  amqp_channel_flow_t req;
2509
0
  req.active = active;
2510
2511
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_CHANNEL_FLOW_METHOD,
2512
0
                                 AMQP_CHANNEL_FLOW_OK_METHOD, &req);
2513
0
}
2514
2515
/**
2516
 * amqp_exchange_declare
2517
 *
2518
 * @param [in] state connection state
2519
 * @param [in] channel the channel to do the RPC on
2520
 * @param [in] exchange exchange
2521
 * @param [in] type type
2522
 * @param [in] passive passive
2523
 * @param [in] durable durable
2524
 * @param [in] auto_delete auto_delete
2525
 * @param [in] internal internal
2526
 * @param [in] arguments arguments
2527
 * @returns amqp_exchange_declare_ok_t
2528
 */
2529
AMQP_EXPORT
2530
amqp_exchange_declare_ok_t *AMQP_CALL amqp_exchange_declare(
2531
    amqp_connection_state_t state, amqp_channel_t channel,
2532
    amqp_bytes_t exchange, amqp_bytes_t type, amqp_boolean_t passive,
2533
    amqp_boolean_t durable, amqp_boolean_t auto_delete, amqp_boolean_t internal,
2534
0
    amqp_table_t arguments) {
2535
0
  amqp_exchange_declare_t req;
2536
0
  req.ticket = 0;
2537
0
  req.exchange = exchange;
2538
0
  req.type = type;
2539
0
  req.passive = passive;
2540
0
  req.durable = durable;
2541
0
  req.auto_delete = auto_delete;
2542
0
  req.internal = internal;
2543
0
  req.nowait = 0;
2544
0
  req.arguments = arguments;
2545
2546
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_EXCHANGE_DECLARE_METHOD,
2547
0
                                 AMQP_EXCHANGE_DECLARE_OK_METHOD, &req);
2548
0
}
2549
2550
/**
2551
 * amqp_exchange_delete
2552
 *
2553
 * @param [in] state connection state
2554
 * @param [in] channel the channel to do the RPC on
2555
 * @param [in] exchange exchange
2556
 * @param [in] if_unused if_unused
2557
 * @returns amqp_exchange_delete_ok_t
2558
 */
2559
AMQP_EXPORT
2560
amqp_exchange_delete_ok_t *AMQP_CALL
2561
    amqp_exchange_delete(amqp_connection_state_t state, amqp_channel_t channel,
2562
0
                         amqp_bytes_t exchange, amqp_boolean_t if_unused) {
2563
0
  amqp_exchange_delete_t req;
2564
0
  req.ticket = 0;
2565
0
  req.exchange = exchange;
2566
0
  req.if_unused = if_unused;
2567
0
  req.nowait = 0;
2568
2569
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_EXCHANGE_DELETE_METHOD,
2570
0
                                 AMQP_EXCHANGE_DELETE_OK_METHOD, &req);
2571
0
}
2572
2573
/**
2574
 * amqp_exchange_bind
2575
 *
2576
 * @param [in] state connection state
2577
 * @param [in] channel the channel to do the RPC on
2578
 * @param [in] destination destination
2579
 * @param [in] source source
2580
 * @param [in] routing_key routing_key
2581
 * @param [in] arguments arguments
2582
 * @returns amqp_exchange_bind_ok_t
2583
 */
2584
AMQP_EXPORT
2585
amqp_exchange_bind_ok_t *AMQP_CALL
2586
    amqp_exchange_bind(amqp_connection_state_t state, amqp_channel_t channel,
2587
                       amqp_bytes_t destination, amqp_bytes_t source,
2588
0
                       amqp_bytes_t routing_key, amqp_table_t arguments) {
2589
0
  amqp_exchange_bind_t req;
2590
0
  req.ticket = 0;
2591
0
  req.destination = destination;
2592
0
  req.source = source;
2593
0
  req.routing_key = routing_key;
2594
0
  req.nowait = 0;
2595
0
  req.arguments = arguments;
2596
2597
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_EXCHANGE_BIND_METHOD,
2598
0
                                 AMQP_EXCHANGE_BIND_OK_METHOD, &req);
2599
0
}
2600
2601
/**
2602
 * amqp_exchange_unbind
2603
 *
2604
 * @param [in] state connection state
2605
 * @param [in] channel the channel to do the RPC on
2606
 * @param [in] destination destination
2607
 * @param [in] source source
2608
 * @param [in] routing_key routing_key
2609
 * @param [in] arguments arguments
2610
 * @returns amqp_exchange_unbind_ok_t
2611
 */
2612
AMQP_EXPORT
2613
amqp_exchange_unbind_ok_t *AMQP_CALL
2614
    amqp_exchange_unbind(amqp_connection_state_t state, amqp_channel_t channel,
2615
                         amqp_bytes_t destination, amqp_bytes_t source,
2616
0
                         amqp_bytes_t routing_key, amqp_table_t arguments) {
2617
0
  amqp_exchange_unbind_t req;
2618
0
  req.ticket = 0;
2619
0
  req.destination = destination;
2620
0
  req.source = source;
2621
0
  req.routing_key = routing_key;
2622
0
  req.nowait = 0;
2623
0
  req.arguments = arguments;
2624
2625
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_EXCHANGE_UNBIND_METHOD,
2626
0
                                 AMQP_EXCHANGE_UNBIND_OK_METHOD, &req);
2627
0
}
2628
2629
/**
2630
 * amqp_queue_declare
2631
 *
2632
 * @param [in] state connection state
2633
 * @param [in] channel the channel to do the RPC on
2634
 * @param [in] queue queue
2635
 * @param [in] passive passive
2636
 * @param [in] durable durable
2637
 * @param [in] exclusive exclusive
2638
 * @param [in] auto_delete auto_delete
2639
 * @param [in] arguments arguments
2640
 * @returns amqp_queue_declare_ok_t
2641
 */
2642
AMQP_EXPORT
2643
amqp_queue_declare_ok_t *AMQP_CALL amqp_queue_declare(
2644
    amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue,
2645
    amqp_boolean_t passive, amqp_boolean_t durable, amqp_boolean_t exclusive,
2646
0
    amqp_boolean_t auto_delete, amqp_table_t arguments) {
2647
0
  amqp_queue_declare_t req;
2648
0
  req.ticket = 0;
2649
0
  req.queue = queue;
2650
0
  req.passive = passive;
2651
0
  req.durable = durable;
2652
0
  req.exclusive = exclusive;
2653
0
  req.auto_delete = auto_delete;
2654
0
  req.nowait = 0;
2655
0
  req.arguments = arguments;
2656
2657
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_QUEUE_DECLARE_METHOD,
2658
0
                                 AMQP_QUEUE_DECLARE_OK_METHOD, &req);
2659
0
}
2660
2661
/**
2662
 * amqp_queue_bind
2663
 *
2664
 * @param [in] state connection state
2665
 * @param [in] channel the channel to do the RPC on
2666
 * @param [in] queue queue
2667
 * @param [in] exchange exchange
2668
 * @param [in] routing_key routing_key
2669
 * @param [in] arguments arguments
2670
 * @returns amqp_queue_bind_ok_t
2671
 */
2672
AMQP_EXPORT
2673
amqp_queue_bind_ok_t *AMQP_CALL amqp_queue_bind(
2674
    amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue,
2675
0
    amqp_bytes_t exchange, amqp_bytes_t routing_key, amqp_table_t arguments) {
2676
0
  amqp_queue_bind_t req;
2677
0
  req.ticket = 0;
2678
0
  req.queue = queue;
2679
0
  req.exchange = exchange;
2680
0
  req.routing_key = routing_key;
2681
0
  req.nowait = 0;
2682
0
  req.arguments = arguments;
2683
2684
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_QUEUE_BIND_METHOD,
2685
0
                                 AMQP_QUEUE_BIND_OK_METHOD, &req);
2686
0
}
2687
2688
/**
2689
 * amqp_queue_purge
2690
 *
2691
 * @param [in] state connection state
2692
 * @param [in] channel the channel to do the RPC on
2693
 * @param [in] queue queue
2694
 * @returns amqp_queue_purge_ok_t
2695
 */
2696
AMQP_EXPORT
2697
amqp_queue_purge_ok_t *AMQP_CALL amqp_queue_purge(amqp_connection_state_t state,
2698
                                                  amqp_channel_t channel,
2699
0
                                                  amqp_bytes_t queue) {
2700
0
  amqp_queue_purge_t req;
2701
0
  req.ticket = 0;
2702
0
  req.queue = queue;
2703
0
  req.nowait = 0;
2704
2705
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_QUEUE_PURGE_METHOD,
2706
0
                                 AMQP_QUEUE_PURGE_OK_METHOD, &req);
2707
0
}
2708
2709
/**
2710
 * amqp_queue_delete
2711
 *
2712
 * @param [in] state connection state
2713
 * @param [in] channel the channel to do the RPC on
2714
 * @param [in] queue queue
2715
 * @param [in] if_unused if_unused
2716
 * @param [in] if_empty if_empty
2717
 * @returns amqp_queue_delete_ok_t
2718
 */
2719
AMQP_EXPORT
2720
amqp_queue_delete_ok_t *AMQP_CALL amqp_queue_delete(
2721
    amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue,
2722
0
    amqp_boolean_t if_unused, amqp_boolean_t if_empty) {
2723
0
  amqp_queue_delete_t req;
2724
0
  req.ticket = 0;
2725
0
  req.queue = queue;
2726
0
  req.if_unused = if_unused;
2727
0
  req.if_empty = if_empty;
2728
0
  req.nowait = 0;
2729
2730
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_QUEUE_DELETE_METHOD,
2731
0
                                 AMQP_QUEUE_DELETE_OK_METHOD, &req);
2732
0
}
2733
2734
/**
2735
 * amqp_queue_unbind
2736
 *
2737
 * @param [in] state connection state
2738
 * @param [in] channel the channel to do the RPC on
2739
 * @param [in] queue queue
2740
 * @param [in] exchange exchange
2741
 * @param [in] routing_key routing_key
2742
 * @param [in] arguments arguments
2743
 * @returns amqp_queue_unbind_ok_t
2744
 */
2745
AMQP_EXPORT
2746
amqp_queue_unbind_ok_t *AMQP_CALL amqp_queue_unbind(
2747
    amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue,
2748
0
    amqp_bytes_t exchange, amqp_bytes_t routing_key, amqp_table_t arguments) {
2749
0
  amqp_queue_unbind_t req;
2750
0
  req.ticket = 0;
2751
0
  req.queue = queue;
2752
0
  req.exchange = exchange;
2753
0
  req.routing_key = routing_key;
2754
0
  req.arguments = arguments;
2755
2756
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_QUEUE_UNBIND_METHOD,
2757
0
                                 AMQP_QUEUE_UNBIND_OK_METHOD, &req);
2758
0
}
2759
2760
/**
2761
 * amqp_basic_qos
2762
 *
2763
 * @param [in] state connection state
2764
 * @param [in] channel the channel to do the RPC on
2765
 * @param [in] prefetch_size prefetch_size
2766
 * @param [in] prefetch_count prefetch_count
2767
 * @param [in] global global
2768
 * @returns amqp_basic_qos_ok_t
2769
 */
2770
AMQP_EXPORT
2771
amqp_basic_qos_ok_t *AMQP_CALL amqp_basic_qos(amqp_connection_state_t state,
2772
                                              amqp_channel_t channel,
2773
                                              uint32_t prefetch_size,
2774
                                              uint16_t prefetch_count,
2775
0
                                              amqp_boolean_t global) {
2776
0
  amqp_basic_qos_t req;
2777
0
  req.prefetch_size = prefetch_size;
2778
0
  req.prefetch_count = prefetch_count;
2779
0
  req.global = global;
2780
2781
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_BASIC_QOS_METHOD,
2782
0
                                 AMQP_BASIC_QOS_OK_METHOD, &req);
2783
0
}
2784
2785
/**
2786
 * amqp_basic_consume
2787
 *
2788
 * @param [in] state connection state
2789
 * @param [in] channel the channel to do the RPC on
2790
 * @param [in] queue queue
2791
 * @param [in] consumer_tag consumer_tag
2792
 * @param [in] no_local no_local
2793
 * @param [in] no_ack no_ack
2794
 * @param [in] exclusive exclusive
2795
 * @param [in] arguments arguments
2796
 * @returns amqp_basic_consume_ok_t
2797
 */
2798
AMQP_EXPORT
2799
amqp_basic_consume_ok_t *AMQP_CALL amqp_basic_consume(
2800
    amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue,
2801
    amqp_bytes_t consumer_tag, amqp_boolean_t no_local, amqp_boolean_t no_ack,
2802
0
    amqp_boolean_t exclusive, amqp_table_t arguments) {
2803
0
  amqp_basic_consume_t req;
2804
0
  req.ticket = 0;
2805
0
  req.queue = queue;
2806
0
  req.consumer_tag = consumer_tag;
2807
0
  req.no_local = no_local;
2808
0
  req.no_ack = no_ack;
2809
0
  req.exclusive = exclusive;
2810
0
  req.nowait = 0;
2811
0
  req.arguments = arguments;
2812
2813
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_BASIC_CONSUME_METHOD,
2814
0
                                 AMQP_BASIC_CONSUME_OK_METHOD, &req);
2815
0
}
2816
2817
/**
2818
 * amqp_basic_cancel
2819
 *
2820
 * @param [in] state connection state
2821
 * @param [in] channel the channel to do the RPC on
2822
 * @param [in] consumer_tag consumer_tag
2823
 * @returns amqp_basic_cancel_ok_t
2824
 */
2825
AMQP_EXPORT
2826
amqp_basic_cancel_ok_t *AMQP_CALL
2827
    amqp_basic_cancel(amqp_connection_state_t state, amqp_channel_t channel,
2828
0
                      amqp_bytes_t consumer_tag) {
2829
0
  amqp_basic_cancel_t req;
2830
0
  req.consumer_tag = consumer_tag;
2831
0
  req.nowait = 0;
2832
2833
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_BASIC_CANCEL_METHOD,
2834
0
                                 AMQP_BASIC_CANCEL_OK_METHOD, &req);
2835
0
}
2836
2837
/**
2838
 * amqp_basic_recover
2839
 *
2840
 * @param [in] state connection state
2841
 * @param [in] channel the channel to do the RPC on
2842
 * @param [in] requeue requeue
2843
 * @returns amqp_basic_recover_ok_t
2844
 */
2845
AMQP_EXPORT
2846
amqp_basic_recover_ok_t *AMQP_CALL
2847
    amqp_basic_recover(amqp_connection_state_t state, amqp_channel_t channel,
2848
0
                       amqp_boolean_t requeue) {
2849
0
  amqp_basic_recover_t req;
2850
0
  req.requeue = requeue;
2851
2852
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_BASIC_RECOVER_METHOD,
2853
0
                                 AMQP_BASIC_RECOVER_OK_METHOD, &req);
2854
0
}
2855
2856
/**
2857
 * amqp_tx_select
2858
 *
2859
 * @param [in] state connection state
2860
 * @param [in] channel the channel to do the RPC on
2861
 * @returns amqp_tx_select_ok_t
2862
 */
2863
AMQP_EXPORT
2864
amqp_tx_select_ok_t *AMQP_CALL amqp_tx_select(amqp_connection_state_t state,
2865
0
                                              amqp_channel_t channel) {
2866
0
  amqp_tx_select_t req;
2867
2868
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_TX_SELECT_METHOD,
2869
0
                                 AMQP_TX_SELECT_OK_METHOD, &req);
2870
0
}
2871
2872
/**
2873
 * amqp_tx_commit
2874
 *
2875
 * @param [in] state connection state
2876
 * @param [in] channel the channel to do the RPC on
2877
 * @returns amqp_tx_commit_ok_t
2878
 */
2879
AMQP_EXPORT
2880
amqp_tx_commit_ok_t *AMQP_CALL amqp_tx_commit(amqp_connection_state_t state,
2881
0
                                              amqp_channel_t channel) {
2882
0
  amqp_tx_commit_t req;
2883
2884
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_TX_COMMIT_METHOD,
2885
0
                                 AMQP_TX_COMMIT_OK_METHOD, &req);
2886
0
}
2887
2888
/**
2889
 * amqp_tx_rollback
2890
 *
2891
 * @param [in] state connection state
2892
 * @param [in] channel the channel to do the RPC on
2893
 * @returns amqp_tx_rollback_ok_t
2894
 */
2895
AMQP_EXPORT
2896
amqp_tx_rollback_ok_t *AMQP_CALL amqp_tx_rollback(amqp_connection_state_t state,
2897
0
                                                  amqp_channel_t channel) {
2898
0
  amqp_tx_rollback_t req;
2899
2900
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_TX_ROLLBACK_METHOD,
2901
0
                                 AMQP_TX_ROLLBACK_OK_METHOD, &req);
2902
0
}
2903
2904
/**
2905
 * amqp_confirm_select
2906
 *
2907
 * @param [in] state connection state
2908
 * @param [in] channel the channel to do the RPC on
2909
 * @returns amqp_confirm_select_ok_t
2910
 */
2911
AMQP_EXPORT
2912
amqp_confirm_select_ok_t *AMQP_CALL
2913
0
    amqp_confirm_select(amqp_connection_state_t state, amqp_channel_t channel) {
2914
0
  amqp_confirm_select_t req;
2915
0
  req.nowait = 0;
2916
2917
0
  return amqp_simple_rpc_decoded(state, channel, AMQP_CONFIRM_SELECT_METHOD,
2918
0
                                 AMQP_CONFIRM_SELECT_OK_METHOD, &req);
2919
0
}