diff options
author | David Wragg <dpw@lshift.net> | 2010-05-30 23:31:40 +0100 |
---|---|---|
committer | David Wragg <dpw@lshift.net> | 2010-05-30 23:31:40 +0100 |
commit | 2347dc9977d3bf0c9ed19f7ed3a905eb4e65fa46 (patch) | |
tree | 56b6486c279997736c61a5b3fe6661caadb7d352 | |
parent | 76e825b388c6c3b65ef238a245748f38d3f1c1fc (diff) | |
download | rabbitmq-c-github-ask-2347dc9977d3bf0c9ed19f7ed3a905eb4e65fa46.tar.gz |
Add amqp_end_connection, which closes the socket and destroys the connection
-rw-r--r-- | examples/amqp_bind.c | 3 | ||||
-rw-r--r-- | examples/amqp_consumer.c | 3 | ||||
-rw-r--r-- | examples/amqp_exchange_declare.c | 3 | ||||
-rw-r--r-- | examples/amqp_listen.c | 3 | ||||
-rw-r--r-- | examples/amqp_listenq.c | 3 | ||||
-rw-r--r-- | examples/amqp_producer.c | 3 | ||||
-rw-r--r-- | examples/amqp_sendstring.c | 3 | ||||
-rw-r--r-- | examples/amqp_unbind.c | 3 | ||||
-rw-r--r-- | librabbitmq/amqp.h | 1 | ||||
-rw-r--r-- | librabbitmq/amqp_connection.c | 9 | ||||
-rw-r--r-- | tools/common.c | 11 |
11 files changed, 23 insertions, 22 deletions
diff --git a/examples/amqp_bind.c b/examples/amqp_bind.c index 697df2a..cf7c377 100644 --- a/examples/amqp_bind.c +++ b/examples/amqp_bind.c @@ -99,7 +99,6 @@ int main(int argc, char const * const *argv) { die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS), "Closing channel"); die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS), "Closing connection"); - amqp_destroy_connection(conn); - die_on_error(close(sockfd), "Closing socket"); + die_on_error(amqp_end_connection(conn), "Ending connection"); return 0; } diff --git a/examples/amqp_consumer.c b/examples/amqp_consumer.c index aa33639..331fe1d 100644 --- a/examples/amqp_consumer.c +++ b/examples/amqp_consumer.c @@ -180,8 +180,7 @@ int main(int argc, char const * const *argv) { die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS), "Closing channel"); die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS), "Closing connection"); - amqp_destroy_connection(conn); - die_on_error(close(sockfd), "Closing socket"); + die_on_error(amqp_end_connection(conn), "Ending connection"); return 0; } diff --git a/examples/amqp_exchange_declare.c b/examples/amqp_exchange_declare.c index 14bc163..32e71b0 100644 --- a/examples/amqp_exchange_declare.c +++ b/examples/amqp_exchange_declare.c @@ -94,7 +94,6 @@ int main(int argc, char const * const *argv) { die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS), "Closing channel"); die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS), "Closing connection"); - amqp_destroy_connection(conn); - die_on_error(close(sockfd), "Closing socket"); + die_on_error(amqp_end_connection(conn), "Ending connection"); return 0; } diff --git a/examples/amqp_listen.c b/examples/amqp_listen.c index 0162ce6..c1401ee 100644 --- a/examples/amqp_listen.c +++ b/examples/amqp_listen.c @@ -187,8 +187,7 @@ int main(int argc, char const * const *argv) { die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS), "Closing channel"); die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS), "Closing connection"); - amqp_destroy_connection(conn); - die_on_error(close(sockfd), "Closing socket"); + die_on_error(amqp_end_connection(conn), "Ending connection"); return 0; } diff --git a/examples/amqp_listenq.c b/examples/amqp_listenq.c index 9100dec..00dd2d7 100644 --- a/examples/amqp_listenq.c +++ b/examples/amqp_listenq.c @@ -171,8 +171,7 @@ int main(int argc, char const * const *argv) { die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS), "Closing channel"); die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS), "Closing connection"); - amqp_destroy_connection(conn); - die_on_error(close(sockfd), "Closing socket"); + die_on_error(amqp_end_connection(conn), "Ending connection"); return 0; } diff --git a/examples/amqp_producer.c b/examples/amqp_producer.c index ac6eebc..94c529d 100644 --- a/examples/amqp_producer.c +++ b/examples/amqp_producer.c @@ -151,7 +151,6 @@ int main(int argc, char const * const *argv) { die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS), "Closing channel"); die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS), "Closing connection"); - amqp_destroy_connection(conn); - die_on_error(close(sockfd), "Closing socket"); + die_on_error(amqp_end_connection(conn), "Ending connection"); return 0; } diff --git a/examples/amqp_sendstring.c b/examples/amqp_sendstring.c index 6e8e0b6..e669505 100644 --- a/examples/amqp_sendstring.c +++ b/examples/amqp_sendstring.c @@ -108,7 +108,6 @@ int main(int argc, char const * const *argv) { die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS), "Closing channel"); die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS), "Closing connection"); - amqp_destroy_connection(conn); - die_on_error(close(sockfd), "Closing socket"); + die_on_error(amqp_end_connection(conn), "Ending connection"); return 0; } diff --git a/examples/amqp_unbind.c b/examples/amqp_unbind.c index 27df916..bc92efe 100644 --- a/examples/amqp_unbind.c +++ b/examples/amqp_unbind.c @@ -99,7 +99,6 @@ int main(int argc, char const * const *argv) { die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS), "Closing channel"); die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS), "Closing connection"); - amqp_destroy_connection(conn); - die_on_error(close(sockfd), "Closing socket"); + die_on_error(amqp_end_connection(conn), "Ending connection"); return 0; } diff --git a/librabbitmq/amqp.h b/librabbitmq/amqp.h index 139de5d..b67d6c8 100644 --- a/librabbitmq/amqp.h +++ b/librabbitmq/amqp.h @@ -310,6 +310,7 @@ extern int amqp_tune_connection(amqp_connection_state_t state, int heartbeat); int amqp_get_channel_max(amqp_connection_state_t state); extern void amqp_destroy_connection(amqp_connection_state_t state); +extern int amqp_end_connection(amqp_connection_state_t state); extern int amqp_handle_input(amqp_connection_state_t state, amqp_bytes_t received_data, diff --git a/librabbitmq/amqp_connection.c b/librabbitmq/amqp_connection.c index 8623eed..7531fac 100644 --- a/librabbitmq/amqp_connection.c +++ b/librabbitmq/amqp_connection.c @@ -170,6 +170,15 @@ void amqp_destroy_connection(amqp_connection_state_t state) { free(state); } +int amqp_end_connection(amqp_connection_state_t state) { + int s = state->sockfd; + amqp_destroy_connection(state); + if (close(s) < 0) + return -errno; + else + return 0; +} + static void return_to_idle(amqp_connection_state_t state) { state->inbound_buffer.bytes = NULL; state->inbound_offset = 0; diff --git a/tools/common.c b/tools/common.c index 6c0e871..d4771ac 100644 --- a/tools/common.c +++ b/tools/common.c @@ -245,16 +245,15 @@ amqp_connection_state_t make_connection(void) void close_connection(amqp_connection_state_t conn) { - int s = amqp_get_sockfd(conn); - + int res; die_rpc(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS), "closing channel"); die_rpc(amqp_connection_close(conn, AMQP_REPLY_SUCCESS), "closing connection"); - amqp_destroy_connection(conn); - - if (close(s) < 0) - die_errno(errno, "closing socket"); + + res = amqp_end_connection(conn); + if (res < 0) + die_errno(-res, "closing connection"); } amqp_bytes_t read_all(int fd) |