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.c21
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;
+}