diff options
Diffstat (limited to 'librabbitmq/amqp_connection.c')
-rw-r--r-- | librabbitmq/amqp_connection.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/librabbitmq/amqp_connection.c b/librabbitmq/amqp_connection.c index d5c29b0..5d70b07 100644 --- a/librabbitmq/amqp_connection.c +++ b/librabbitmq/amqp_connection.c @@ -91,6 +91,8 @@ amqp_connection_state_t amqp_new_connection(void) goto out_nomem; } + init_amqp_pool(&state->properties_pool, 512); + return state; out_nomem: @@ -107,20 +109,25 @@ int amqp_get_sockfd(amqp_connection_state_t state) void amqp_set_sockfd(amqp_connection_state_t state, int sockfd) { - amqp_socket_t *socket = amqp_tcp_socket_new(); + amqp_socket_t *socket = amqp_tcp_socket_new(state); if (!socket) { amqp_abort("%s", strerror(errno)); } amqp_tcp_socket_set_sockfd(socket, sockfd); - amqp_set_socket(state, socket); } void amqp_set_socket(amqp_connection_state_t state, amqp_socket_t *socket) { - amqp_socket_close(state->socket); + amqp_socket_delete(state->socket); state->socket = socket; } +amqp_socket_t * +amqp_get_socket(amqp_connection_state_t state) +{ + return state->socket; +} + int amqp_tune_connection(amqp_connection_state_t state, int channel_max, int frame_max, @@ -175,7 +182,8 @@ int amqp_destroy_connection(amqp_connection_state_t state) free(state->outbound_buffer.bytes); free(state->sock_inbound_buffer.bytes); - status = amqp_socket_close(state->socket); + amqp_socket_delete(state->socket); + empty_amqp_pool(&state->properties_pool); free(state); } return status; @@ -511,3 +519,8 @@ int amqp_send_frame(amqp_connection_state_t state, return res; } +amqp_table_t * +amqp_get_server_properties(amqp_connection_state_t state) +{ + return &state->server_properties; +} |