int amqp_tune_connection(amqp_connection_state_t state, int channel_max, int frame_max, int heartbeat) { void *newbuf; ENFORCE_STATE(state, CONNECTION_STATE_IDLE); state->channel_max = channel_max; state->frame_max = frame_max; state->heartbeat = heartbeat; if (amqp_heartbeat_enabled(state)) { uint64_t current_time = amqp_get_monotonic_timestamp(); if (0 == current_time) { return AMQP_STATUS_TIMER_FAILURE; } state->next_send_heartbeat = amqp_calc_next_send_heartbeat(state, current_time); state->next_recv_heartbeat = amqp_calc_next_recv_heartbeat(state, current_time); } state->outbound_buffer.len = frame_max; newbuf = realloc(state->outbound_buffer.bytes, frame_max); if (newbuf == NULL) { return AMQP_STATUS_NO_MEMORY; } state->outbound_buffer.bytes = newbuf; return AMQP_STATUS_OK; }
int amqp_tune_connection(amqp_connection_state_t state, int channel_max, int frame_max, int heartbeat) { void *newbuf; ENFORCE_STATE(state, CONNECTION_STATE_IDLE); state->channel_max = channel_max; state->frame_max = frame_max; state->heartbeat = heartbeat; empty_amqp_pool(&state->frame_pool); init_amqp_pool(&state->frame_pool, frame_max); state->inbound_buffer.len = frame_max; state->outbound_buffer.len = frame_max; newbuf = realloc(state->outbound_buffer.bytes, frame_max); if (newbuf == NULL) { amqp_destroy_connection(state); return -ENOMEM; } state->outbound_buffer.bytes = newbuf; return 0; }
void amqp_release_buffers(amqp_connection_state_t state) { ENFORCE_STATE(state, CONNECTION_STATE_IDLE); amqp_assert(state->first_queued_frame == NULL, "Programming error: attempt to amqp_release_buffers while waiting events enqueued"); recycle_amqp_pool(&state->frame_pool); recycle_amqp_pool(&state->decoding_pool); }
void amqp_release_buffers(amqp_connection_state_t state) { int i; ENFORCE_STATE(state, CONNECTION_STATE_IDLE); for (i = 0; i < POOL_TABLE_SIZE; ++i) { amqp_pool_table_entry_t *entry = state->pool_table[i]; for ( ;NULL != entry; entry = entry->next) { amqp_maybe_release_buffers_on_channel(state, entry->channel); } } }
int amqp_tune_connection(amqp_connection_state_t state, int channel_max, int frame_max, int heartbeat) { void *newbuf; ENFORCE_STATE(state, CONNECTION_STATE_IDLE); state->channel_max = channel_max; state->frame_max = frame_max; state->heartbeat = heartbeat; state->outbound_buffer.len = frame_max; newbuf = realloc(state->outbound_buffer.bytes, frame_max); if (newbuf == NULL) { return AMQP_STATUS_NO_MEMORY; } state->outbound_buffer.bytes = newbuf; return AMQP_STATUS_OK; }
int amqp_tune_connection(amqp_connection_state_t state, int channel_max, int frame_max, int heartbeat) { void *newbuf; int res; ENFORCE_STATE(state, CONNECTION_STATE_IDLE); state->channel_max = channel_max; state->frame_max = frame_max; state->heartbeat = heartbeat; if (0 > state->heartbeat) { state->heartbeat = 0; } res = amqp_time_s_from_now(&state->next_send_heartbeat, amqp_heartbeat_send(state)); if (AMQP_STATUS_OK != res) { return res; } res = amqp_time_s_from_now(&state->next_recv_heartbeat, amqp_heartbeat_recv(state)); if (AMQP_STATUS_OK != res) { return res; } state->outbound_buffer.len = frame_max; newbuf = realloc(state->outbound_buffer.bytes, frame_max); if (newbuf == NULL) { return AMQP_STATUS_NO_MEMORY; } state->outbound_buffer.bytes = newbuf; return AMQP_STATUS_OK; }