summaryrefslogtreecommitdiff
path: root/librabbitmq/amqp_framing.c
diff options
context:
space:
mode:
authorAsk Solem <ask@celeryproject.org>2014-04-14 17:29:03 +0100
committerAsk Solem <ask@celeryproject.org>2014-04-14 17:29:03 +0100
commitbe3000b4c84d7503f5ef4067de44ff16d060d158 (patch)
treefecacb0f149b067202c443b59aad3cc027a0ff1c /librabbitmq/amqp_framing.c
parentdcb8edaccd6e164d624edfab0f3120d96f707f0a (diff)
parentfe844e41ffad5691607982cbfe4054aacdcb81e0 (diff)
downloadrabbitmq-c-github-ask-be3000b4c84d7503f5ef4067de44ff16d060d158.tar.gz
Merge branch 'alanxz/master'
Conflicts: Makefile.am codegen
Diffstat (limited to 'librabbitmq/amqp_framing.c')
-rw-r--r--librabbitmq/amqp_framing.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/librabbitmq/amqp_framing.c b/librabbitmq/amqp_framing.c
index e065e48..b2f0a83 100644
--- a/librabbitmq/amqp_framing.c
+++ b/librabbitmq/amqp_framing.c
@@ -105,6 +105,8 @@ char const *amqp_method_name(amqp_method_number_t methodNumber) {
case AMQP_CONNECTION_OPEN_OK_METHOD: return "AMQP_CONNECTION_OPEN_OK_METHOD";
case AMQP_CONNECTION_CLOSE_METHOD: return "AMQP_CONNECTION_CLOSE_METHOD";
case AMQP_CONNECTION_CLOSE_OK_METHOD: return "AMQP_CONNECTION_CLOSE_OK_METHOD";
+ case AMQP_CONNECTION_BLOCKED_METHOD: return "AMQP_CONNECTION_BLOCKED_METHOD";
+ case AMQP_CONNECTION_UNBLOCKED_METHOD: return "AMQP_CONNECTION_UNBLOCKED_METHOD";
case AMQP_CHANNEL_OPEN_METHOD: return "AMQP_CHANNEL_OPEN_METHOD";
case AMQP_CHANNEL_OPEN_OK_METHOD: return "AMQP_CHANNEL_OPEN_OK_METHOD";
case AMQP_CHANNEL_FLOW_METHOD: return "AMQP_CHANNEL_FLOW_METHOD";
@@ -326,6 +328,23 @@ int amqp_decode_method(amqp_method_number_t methodNumber,
*decoded = m;
return 0;
}
+ case AMQP_CONNECTION_BLOCKED_METHOD: {
+ amqp_connection_blocked_t *m = (amqp_connection_blocked_t *) amqp_pool_alloc(pool, sizeof(amqp_connection_blocked_t));
+ if (m == NULL) { return AMQP_STATUS_NO_MEMORY; }
+ {
+ uint8_t len;
+ if (!amqp_decode_8(encoded, &offset, &len)
+ || !amqp_decode_bytes(encoded, &offset, &m->reason, len))
+ return AMQP_STATUS_BAD_AMQP_DATA;
+ }
+ *decoded = m;
+ return 0;
+ }
+ case AMQP_CONNECTION_UNBLOCKED_METHOD: {
+ amqp_connection_unblocked_t *m = NULL; /* no fields */
+ *decoded = m;
+ return 0;
+ }
case AMQP_CHANNEL_OPEN_METHOD: {
amqp_channel_open_t *m = (amqp_channel_open_t *) amqp_pool_alloc(pool, sizeof(amqp_channel_open_t));
if (m == NULL) { return AMQP_STATUS_NO_MEMORY; }
@@ -1267,6 +1286,16 @@ int amqp_encode_method(amqp_method_number_t methodNumber,
case AMQP_CONNECTION_CLOSE_OK_METHOD: {
return offset;
}
+ case AMQP_CONNECTION_BLOCKED_METHOD: {
+ amqp_connection_blocked_t *m = (amqp_connection_blocked_t *) decoded;
+ if (!amqp_encode_8(encoded, &offset, m->reason.len)
+ || !amqp_encode_bytes(encoded, &offset, m->reason))
+ return AMQP_STATUS_BAD_AMQP_DATA;
+ return offset;
+ }
+ case AMQP_CONNECTION_UNBLOCKED_METHOD: {
+ return offset;
+ }
case AMQP_CHANNEL_OPEN_METHOD: {
amqp_channel_open_t *m = (amqp_channel_open_t *) decoded;
if (!amqp_encode_8(encoded, &offset, m->out_of_band.len)