summaryrefslogtreecommitdiff
path: root/librabbitmq/amqp_connection.c
diff options
context:
space:
mode:
Diffstat (limited to 'librabbitmq/amqp_connection.c')
-rw-r--r--librabbitmq/amqp_connection.c44
1 files changed, 24 insertions, 20 deletions
diff --git a/librabbitmq/amqp_connection.c b/librabbitmq/amqp_connection.c
index 85a248d..9d4ebbe 100644
--- a/librabbitmq/amqp_connection.c
+++ b/librabbitmq/amqp_connection.c
@@ -287,13 +287,13 @@ int amqp_handle_input(amqp_connection_state_t state,
decoded_frame->channel = 0;
decoded_frame->payload.protocol_header.transport_high
- = amqp_d8(raw_frame, 4);
+ = amqp_d8(amqp_offset(raw_frame, 4));
decoded_frame->payload.protocol_header.transport_low
- = amqp_d8(raw_frame, 5);
+ = amqp_d8(amqp_offset(raw_frame, 5));
decoded_frame->payload.protocol_header.protocol_version_major
- = amqp_d8(raw_frame, 6);
+ = amqp_d8(amqp_offset(raw_frame, 6));
decoded_frame->payload.protocol_header.protocol_version_minor
- = amqp_d8(raw_frame, 7);
+ = amqp_d8(amqp_offset(raw_frame, 7));
return_to_idle(state);
return (int)bytes_consumed;
@@ -306,10 +306,10 @@ int amqp_handle_input(amqp_connection_state_t state,
amqp_channel_t channel;
amqp_pool_t *channel_pool;
/* frame length is 3 bytes in */
- channel = amqp_d16(raw_frame, 1);
+ channel = amqp_d16(amqp_offset(raw_frame, 1));
state->target_size
- = amqp_d32(raw_frame, 3) + HEADER_SIZE + FOOTER_SIZE;
+ = amqp_d32(amqp_offset(raw_frame, 3)) + HEADER_SIZE + FOOTER_SIZE;
if ((size_t)state->frame_max < state->target_size) {
return AMQP_STATUS_BAD_AMQP_DATA;
@@ -346,12 +346,13 @@ int amqp_handle_input(amqp_connection_state_t state,
amqp_pool_t *channel_pool;
/* Check frame end marker (footer) */
- if (amqp_d8(raw_frame, state->target_size - 1) != AMQP_FRAME_END) {
+ if (amqp_d8(amqp_offset(raw_frame, state->target_size - 1)) !=
+ AMQP_FRAME_END) {
return AMQP_STATUS_BAD_AMQP_DATA;
}
- decoded_frame->frame_type = amqp_d8(raw_frame, 0);
- decoded_frame->channel = amqp_d16(raw_frame, 1);
+ decoded_frame->frame_type = amqp_d8(amqp_offset(raw_frame, 0));
+ decoded_frame->channel = amqp_d16(amqp_offset(raw_frame, 1));
channel_pool = amqp_get_or_create_channel_pool(state, decoded_frame->channel);
if (NULL == channel_pool) {
@@ -360,7 +361,8 @@ int amqp_handle_input(amqp_connection_state_t state,
switch (decoded_frame->frame_type) {
case AMQP_FRAME_METHOD:
- decoded_frame->payload.method.id = amqp_d32(raw_frame, HEADER_SIZE);
+ decoded_frame->payload.method.id =
+ amqp_d32(amqp_offset(raw_frame, HEADER_SIZE));
encoded.bytes = amqp_offset(raw_frame, HEADER_SIZE + 4);
encoded.len = state->target_size - HEADER_SIZE - 4 - FOOTER_SIZE;
@@ -375,10 +377,10 @@ int amqp_handle_input(amqp_connection_state_t state,
case AMQP_FRAME_HEADER:
decoded_frame->payload.properties.class_id
- = amqp_d16(raw_frame, HEADER_SIZE);
+ = amqp_d16(amqp_offset(raw_frame, HEADER_SIZE));
/* unused 2-byte weight field goes here */
decoded_frame->payload.properties.body_size
- = amqp_d64(raw_frame, HEADER_SIZE + 4);
+ = amqp_d64(amqp_offset(raw_frame, HEADER_SIZE + 4));
encoded.bytes = amqp_offset(raw_frame, HEADER_SIZE + 12);
encoded.len = state->target_size - HEADER_SIZE - 12 - FOOTER_SIZE;
decoded_frame->payload.properties.raw = encoded;
@@ -476,8 +478,8 @@ static int amqp_frame_to_bytes(const amqp_frame_t *frame, amqp_bytes_t buffer,
size_t out_frame_len;
int res;
- amqp_e8(out_frame, 0, frame->frame_type);
- amqp_e16(out_frame, 1, frame->channel);
+ amqp_e8(frame->frame_type, amqp_offset(out_frame, 0));
+ amqp_e16(frame->channel, amqp_offset(out_frame, 1));
switch (frame->frame_type) {
case AMQP_FRAME_BODY: {
@@ -491,7 +493,7 @@ static int amqp_frame_to_bytes(const amqp_frame_t *frame, amqp_bytes_t buffer,
case AMQP_FRAME_METHOD: {
amqp_bytes_t method_encoded;
- amqp_e32(out_frame, HEADER_SIZE, frame->payload.method.id);
+ amqp_e32(frame->payload.method.id, amqp_offset(out_frame, HEADER_SIZE));
method_encoded.bytes = amqp_offset(out_frame, HEADER_SIZE + 4);
method_encoded.len = buffer.len - HEADER_SIZE - 4 - FOOTER_SIZE;
@@ -509,9 +511,11 @@ static int amqp_frame_to_bytes(const amqp_frame_t *frame, amqp_bytes_t buffer,
case AMQP_FRAME_HEADER: {
amqp_bytes_t properties_encoded;
- amqp_e16(out_frame, HEADER_SIZE, frame->payload.properties.class_id);
- amqp_e16(out_frame, HEADER_SIZE + 2, 0); /* "weight" */
- amqp_e64(out_frame, HEADER_SIZE + 4, frame->payload.properties.body_size);
+ amqp_e16(frame->payload.properties.class_id,
+ amqp_offset(out_frame, HEADER_SIZE));
+ amqp_e16(0, amqp_offset(out_frame, HEADER_SIZE + 2)); /* "weight" */
+ amqp_e64(frame->payload.properties.body_size,
+ amqp_offset(out_frame, HEADER_SIZE + 4));
properties_encoded.bytes = amqp_offset(out_frame, HEADER_SIZE + 12);
properties_encoded.len = buffer.len - HEADER_SIZE - 12 - FOOTER_SIZE;
@@ -535,8 +539,8 @@ static int amqp_frame_to_bytes(const amqp_frame_t *frame, amqp_bytes_t buffer,
return AMQP_STATUS_INVALID_PARAMETER;
}
- amqp_e32(out_frame, 3, (uint32_t)out_frame_len);
- amqp_e8(out_frame, HEADER_SIZE + out_frame_len, AMQP_FRAME_END);
+ amqp_e32((uint32_t)out_frame_len, amqp_offset(out_frame, 3));
+ amqp_e8(AMQP_FRAME_END, amqp_offset(out_frame, HEADER_SIZE + out_frame_len));
encoded->bytes = out_frame;
encoded->len = out_frame_len + HEADER_SIZE + FOOTER_SIZE;