Coverage Report

Created: 2026-09-14 06:02

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