summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMichael Steinert <mike.steinert@gmail.com>2012-06-08 15:38:22 -0600
committerAlan Antonuk <alan.antonuk@gmail.com>2013-04-09 15:48:03 -0700
commit0f022fce389543404f86824ed6c5720d2502cd09 (patch)
tree6e39adb0a9268d32e6873a48723f3d84c1316e87 /examples
parent7240f48af34aea8412473f29e93f6443f79230db (diff)
downloadrabbitmq-c-0f022fce389543404f86824ed6c5720d2502cd09.tar.gz
Propose new socket API
The general idea is to have a non-instantiable socket base class. Connection-specific sub-classes provide a constructor and methods for modifying connection parameters. `amqp_socket_close()` is the destructor. Signed-off-by: Michael Steinert <mike.steinert@gmail.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/amqps_bind.c37
-rw-r--r--examples/amqps_consumer.c38
-rw-r--r--examples/amqps_exchange_declare.c37
-rw-r--r--examples/amqps_listen.c37
-rw-r--r--examples/amqps_listenq.c37
-rw-r--r--examples/amqps_producer.c37
-rw-r--r--examples/amqps_sendstring.c37
-rw-r--r--examples/amqps_unbind.c37
-rw-r--r--examples/utils.c12
-rw-r--r--examples/utils.h1
10 files changed, 236 insertions, 74 deletions
diff --git a/examples/amqps_bind.c b/examples/amqps_bind.c
index 1e2c84f..3255e70 100644
--- a/examples/amqps_bind.c
+++ b/examples/amqps_bind.c
@@ -35,19 +35,18 @@
#include <string.h>
#include <stdint.h>
-#include <amqp-ssl.h>
+#include <amqp-ssl-socket.h>
#include <amqp_framing.h>
#include "utils.h"
int main(int argc, char const * const *argv) {
char const *hostname;
- int port;
+ int port, status;
char const *exchange;
char const *bindingkey;
char const *queue;
-
- int sockfd;
+ amqp_socket_t *socket;
amqp_connection_state_t conn;
if (argc < 6) {
@@ -64,11 +63,31 @@ int main(int argc, char const * const *argv) {
conn = amqp_new_connection();
- die_on_error(sockfd = amqp_open_ssl_socket(conn, hostname, port,
- argc > 6 ? argv[6] : NULL,
- argc > 8 ? argv[7] : NULL,
- argc > 8 ? argv[8] : NULL),
- "Opening SSL/TLS socket");
+ socket = amqp_ssl_socket_new();
+ if (!socket) {
+ die("creating SSL/TLS socket");
+ }
+
+ if (argc > 6) {
+ status = amqp_ssl_socket_set_cacert(socket, argv[6]);
+ if (status) {
+ die("setting CA certificate");
+ }
+ }
+
+ if (argc > 8) {
+ status = amqp_ssl_socket_set_key(socket, argv[7], argv[8]);
+ if (status) {
+ die("setting client key/cert");
+ }
+ }
+
+ status = amqp_socket_open(socket, hostname, port);
+ if (status) {
+ die("opening SSL/TLS connection");
+ }
+
+ amqp_set_socket(conn, socket);
die_on_amqp_error(amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, "guest", "guest"),
"Logging in");
amqp_channel_open(conn, 1);
diff --git a/examples/amqps_consumer.c b/examples/amqps_consumer.c
index 31d251d..cb47dff 100644
--- a/examples/amqps_consumer.c
+++ b/examples/amqps_consumer.c
@@ -35,7 +35,7 @@
#include <string.h>
#include <stdint.h>
-#include <amqp-ssl.h>
+#include <amqp-ssl-socket.h>
#include <amqp_framing.h>
#include <assert.h>
@@ -115,13 +115,11 @@ static void run(amqp_connection_state_t conn)
int main(int argc, char const * const *argv) {
char const *hostname;
- int port;
+ int port, status;
char const *exchange;
char const *bindingkey;
-
- int sockfd;
+ amqp_socket_t *socket;
amqp_connection_state_t conn;
-
amqp_bytes_t queuename;
if (argc < 3) {
@@ -137,11 +135,31 @@ int main(int argc, char const * const *argv) {
conn = amqp_new_connection();
- die_on_error(sockfd = amqp_open_ssl_socket(conn, hostname, port,
- argc > 3 ? argv[3] : NULL,
- argc > 5 ? argv[4] : NULL,
- argc > 5 ? argv[5] : NULL),
- "Opening SSL/TLS socket");
+ socket = amqp_ssl_socket_new();
+ if (!socket) {
+ die("creating SSL/TLS socket");
+ }
+
+ if (argc > 3) {
+ status = amqp_ssl_socket_set_cacert(socket, argv[3]);
+ if (status) {
+ die("setting CA certificate");
+ }
+ }
+
+ if (argc > 4) {
+ status = amqp_ssl_socket_set_key(socket, argv[5], argv[5]);
+ if (status) {
+ die("setting client key/cert");
+ }
+ }
+
+ status = amqp_socket_open(socket, hostname, port);
+ if (status) {
+ die("opening SSL/TLS connection");
+ }
+
+ amqp_set_socket(conn, socket);
die_on_amqp_error(amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, "guest", "guest"),
"Logging in");
amqp_channel_open(conn, 1);
diff --git a/examples/amqps_exchange_declare.c b/examples/amqps_exchange_declare.c
index 6e81087..1310235 100644
--- a/examples/amqps_exchange_declare.c
+++ b/examples/amqps_exchange_declare.c
@@ -35,18 +35,17 @@
#include <string.h>
#include <stdint.h>
-#include <amqp-ssl.h>
+#include <amqp-ssl-socket.h>
#include <amqp_framing.h>
#include "utils.h"
int main(int argc, char const * const *argv) {
char const *hostname;
- int port;
+ int port, status;
char const *exchange;
char const *exchangetype;
-
- int sockfd;
+ amqp_socket_t *socket;
amqp_connection_state_t conn;
if (argc < 5) {
@@ -62,11 +61,31 @@ int main(int argc, char const * const *argv) {
conn = amqp_new_connection();
- die_on_error(sockfd = amqp_open_ssl_socket(conn, hostname, port,
- argc > 5 ? argv[5] : NULL,
- argc > 7 ? argv[6] : NULL,
- argc > 7 ? argv[7] : NULL),
- "Opening SSL/TLS socket");
+ socket = amqp_ssl_socket_new();
+ if (!socket) {
+ die("creating SSL/TLS socket");
+ }
+
+ if (argc > 5) {
+ status = amqp_ssl_socket_set_cacert(socket, argv[5]);
+ if (status) {
+ die("setting CA certificate");
+ }
+ }
+
+ if (argc > 7) {
+ status = amqp_ssl_socket_set_key(socket, argv[6], argv[7]);
+ if (status) {
+ die("setting client key/cert");
+ }
+ }
+
+ status = amqp_socket_open(socket, hostname, port);
+ if (status) {
+ die("opening SSL/TLS connection");
+ }
+
+ amqp_set_socket(conn, socket);
die_on_amqp_error(amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, "guest", "guest"),
"Logging in");
amqp_channel_open(conn, 1);
diff --git a/examples/amqps_listen.c b/examples/amqps_listen.c
index 306bbaa..c6344bd 100644
--- a/examples/amqps_listen.c
+++ b/examples/amqps_listen.c
@@ -35,7 +35,7 @@
#include <string.h>
#include <stdint.h>
-#include <amqp-ssl.h>
+#include <amqp-ssl-socket.h>
#include <amqp_framing.h>
#include <assert.h>
@@ -44,11 +44,10 @@
int main(int argc, char const * const *argv) {
char const *hostname;
- int port;
+ int port, status;
char const *exchange;
char const *bindingkey;
-
- int sockfd;
+ amqp_socket_t *socket;
amqp_connection_state_t conn;
amqp_bytes_t queuename;
@@ -66,11 +65,31 @@ int main(int argc, char const * const *argv) {
conn = amqp_new_connection();
- die_on_error(sockfd = amqp_open_ssl_socket(conn, hostname, port,
- argc > 5 ? argv[5] : NULL,
- argc > 7 ? argv[6] : NULL,
- argc > 7 ? argv[7] : NULL),
- "Opening socket");
+ socket = amqp_ssl_socket_new();
+ if (!socket) {
+ die("creating SSL/TLS socket");
+ }
+
+ if (argc > 5) {
+ status = amqp_ssl_socket_set_cacert(socket, argv[5]);
+ if (status) {
+ die("setting CA certificate");
+ }
+ }
+
+ if (argc > 7) {
+ status = amqp_ssl_socket_set_key(socket, argv[6], argv[7]);
+ if (status) {
+ die("setting client key/cert");
+ }
+ }
+
+ status = amqp_socket_open(socket, hostname, port);
+ if (status) {
+ die("opening SSL/TLS connection");
+ }
+
+ amqp_set_socket(conn, socket);
die_on_amqp_error(amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, "guest", "guest"),
"Logging in");
amqp_channel_open(conn, 1);
diff --git a/examples/amqps_listenq.c b/examples/amqps_listenq.c
index 90b608a..0a9c687 100644
--- a/examples/amqps_listenq.c
+++ b/examples/amqps_listenq.c
@@ -35,7 +35,7 @@
#include <string.h>
#include <stdint.h>
-#include <amqp-ssl.h>
+#include <amqp-ssl-socket.h>
#include <amqp_framing.h>
#include <assert.h>
@@ -44,10 +44,9 @@
int main(int argc, char const * const *argv) {
char const *hostname;
- int port;
+ int port, status;
char const *queuename;
-
- int sockfd;
+ amqp_socket_t *socket;
amqp_connection_state_t conn;
if (argc < 4) {
@@ -62,11 +61,31 @@ int main(int argc, char const * const *argv) {
conn = amqp_new_connection();
- die_on_error(sockfd = amqp_open_ssl_socket(conn, hostname, port,
- argc > 4 ? argv[4] : NULL,
- argc > 6 ? argv[5] : NULL,
- argc > 6 ? argv[6] : NULL),
- "Opening socket");
+ socket = amqp_ssl_socket_new();
+ if (!socket) {
+ die("creating SSL/TLS socket");
+ }
+
+ if (argc > 4) {
+ status = amqp_ssl_socket_set_cacert(socket, argv[4]);
+ if (status) {
+ die("setting CA certificate");
+ }
+ }
+
+ if (argc > 6) {
+ status = amqp_ssl_socket_set_key(socket, argv[5], argv[6]);
+ if (status) {
+ die("setting client key/cert");
+ }
+ }
+
+ status = amqp_socket_open(socket, hostname, port);
+ if (status) {
+ die("opening SSL/TLS connection");
+ }
+
+ amqp_set_socket(conn, socket);
die_on_amqp_error(amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, "guest", "guest"),
"Logging in");
amqp_channel_open(conn, 1);
diff --git a/examples/amqps_producer.c b/examples/amqps_producer.c
index 6e00f29..43649ad 100644
--- a/examples/amqps_producer.c
+++ b/examples/amqps_producer.c
@@ -35,7 +35,7 @@
#include <string.h>
#include <stdint.h>
-#include <amqp-ssl.h>
+#include <amqp-ssl-socket.h>
#include <amqp_framing.h>
#include "utils.h"
@@ -106,11 +106,10 @@ static void send_batch(amqp_connection_state_t conn,
int main(int argc, char const * const *argv) {
char const *hostname;
- int port;
+ int port, status;
int rate_limit;
int message_count;
-
- int sockfd;
+ amqp_socket_t *socket;
amqp_connection_state_t conn;
if (argc < 5) {
@@ -126,11 +125,31 @@ int main(int argc, char const * const *argv) {
conn = amqp_new_connection();
- die_on_error(sockfd = amqp_open_ssl_socket(conn, hostname, port,
- argc > 5 ? argv[5] : NULL,
- argc > 7 ? argv[6] : NULL,
- argc > 7 ? argv[7] : NULL),
- "Opening SSL/TLS socket");
+ socket = amqp_ssl_socket_new();
+ if (!socket) {
+ die("creating SSL/TLS socket");
+ }
+
+ if (argc > 5) {
+ status = amqp_ssl_socket_set_cacert(socket, argv[5]);
+ if (status) {
+ die("setting CA certificate");
+ }
+ }
+
+ if (argc > 7) {
+ status = amqp_ssl_socket_set_key(socket, argv[6], argv[7]);
+ if (status) {
+ die("setting client key/cert");
+ }
+ }
+
+ status = amqp_socket_open(socket, hostname, port);
+ if (status) {
+ die("opening SSL/TLS connection");
+ }
+
+ amqp_set_socket(conn, socket);
die_on_amqp_error(amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, "guest", "guest"),
"Logging in");
amqp_channel_open(conn, 1);
diff --git a/examples/amqps_sendstring.c b/examples/amqps_sendstring.c
index 2315982..a888da8 100644
--- a/examples/amqps_sendstring.c
+++ b/examples/amqps_sendstring.c
@@ -35,19 +35,18 @@
#include <string.h>
#include <stdint.h>
-#include <amqp-ssl.h>
+#include <amqp-ssl-socket.h>
#include <amqp_framing.h>
#include "utils.h"
int main(int argc, char const * const *argv) {
char const *hostname;
- int port;
+ int port, status;
char const *exchange;
char const *routingkey;
char const *messagebody;
-
- int sockfd;
+ amqp_socket_t *socket;
amqp_connection_state_t conn;
if (argc < 6) {
@@ -64,11 +63,31 @@ int main(int argc, char const * const *argv) {
conn = amqp_new_connection();
- die_on_error(sockfd = amqp_open_ssl_socket(conn, hostname, port,
- argc > 6 ? argv[6] : NULL,
- argc > 8 ? argv[7] : NULL,
- argc > 8 ? argv[8] : NULL),
- "Opening socket");
+ socket = amqp_ssl_socket_new();
+ if (!socket) {
+ die("creating SSL/TLS socket");
+ }
+
+ if (argc > 6) {
+ status = amqp_ssl_socket_set_cacert(socket, argv[6]);
+ if (status) {
+ die("setting CA certificate");
+ }
+ }
+
+ if (argc > 8) {
+ status = amqp_ssl_socket_set_key(socket, argv[7], argv[8]);
+ if (status) {
+ die("setting client key/cert");
+ }
+ }
+
+ status = amqp_socket_open(socket, hostname, port);
+ if (status) {
+ die("opening SSL/TLS connection");
+ }
+
+ amqp_set_socket(conn, socket);
die_on_amqp_error(amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, "guest", "guest"),
"Logging in");
amqp_channel_open(conn, 1);
diff --git a/examples/amqps_unbind.c b/examples/amqps_unbind.c
index e429c6d..e9f4317 100644
--- a/examples/amqps_unbind.c
+++ b/examples/amqps_unbind.c
@@ -35,19 +35,18 @@
#include <string.h>
#include <stdint.h>
-#include <amqp-ssl.h>
+#include <amqp-ssl-socket.h>
#include <amqp_framing.h>
#include "utils.h"
int main(int argc, char const * const *argv) {
char const *hostname;
- int port;
+ int port, status;
char const *exchange;
char const *bindingkey;
char const *queue;
-
- int sockfd;
+ amqp_socket_t *socket;
amqp_connection_state_t conn;
if (argc < 6) {
@@ -64,11 +63,31 @@ int main(int argc, char const * const *argv) {
conn = amqp_new_connection();
- die_on_error(sockfd = amqp_open_ssl_socket(conn, hostname, port,
- argc > 6 ? argv[6] : NULL,
- argc > 8 ? argv[7] : NULL,
- argc > 8 ? argv[8] : NULL),
- "Opening socket");
+ socket = amqp_ssl_socket_new();
+ if (!socket) {
+ die("creating SSL/TLS socket");
+ }
+
+ if (argc > 6) {
+ status = amqp_ssl_socket_set_cacert(socket, argv[6]);
+ if (status) {
+ die("setting CA certificate");
+ }
+ }
+
+ if (argc > 8) {
+ status = amqp_ssl_socket_set_key(socket, argv[7], argv[8]);
+ if (status) {
+ die("setting client key/cert");
+ }
+ }
+
+ status = amqp_socket_open(socket, hostname, port);
+ if (status) {
+ die("opening SSL/TLS connection");
+ }
+
+ amqp_set_socket(conn, socket);
die_on_amqp_error(amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, "guest", "guest"),
"Logging in");
amqp_channel_open(conn, 1);
diff --git a/examples/utils.c b/examples/utils.c
index 609c354..0830738 100644
--- a/examples/utils.c
+++ b/examples/utils.c
@@ -34,6 +34,7 @@
* ***** END LICENSE BLOCK *****
*/
+#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -45,8 +46,17 @@
#include "utils.h"
-void die_on_error(int x, char const *context)
+void die(const char *fmt, ...)
{
+ va_list ap;
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+ exit(1);
+}
+
+void die_on_error(int x, char const *context) {
if (x < 0) {
char *errstr = amqp_error_string(-x);
fprintf(stderr, "%s: %s\n", context, errstr);
diff --git a/examples/utils.h b/examples/utils.h
index 2e7b15f..dea86da 100644
--- a/examples/utils.h
+++ b/examples/utils.h
@@ -37,6 +37,7 @@
* ***** END LICENSE BLOCK *****
*/
+void die(const char *fmt, ...);
extern void die_on_error(int x, char const *context);
extern void die_on_amqp_error(amqp_rpc_reply_t x, char const *context);