DISPATCH-390: common AMQP port name string to integer function

Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/20b06ac3
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/20b06ac3
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/20b06ac3

Branch: refs/heads/master
Commit: 20b06ac3452ae4ecdc21b577c164538d454de3a1
Parents: 6d34045
Author: Alan Conway <[email protected]>
Authored: Wed Apr 12 21:27:06 2017 -0400
Committer: Alan Conway <[email protected]>
Committed: Thu Apr 27 13:30:17 2017 -0400

----------------------------------------------------------------------
 include/qpid/dispatch/amqp.h | 11 ++++++++++-
 src/amqp.c                   | 15 +++++++++++++++
 2 files changed, 25 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/20b06ac3/include/qpid/dispatch/amqp.h
----------------------------------------------------------------------
diff --git a/include/qpid/dispatch/amqp.h b/include/qpid/dispatch/amqp.h
index e5c45c6..beb083a 100644
--- a/include/qpid/dispatch/amqp.h
+++ b/include/qpid/dispatch/amqp.h
@@ -33,9 +33,17 @@
  * AMQP Constants
  */
 typedef enum {
-    QD_AMQP_MIN_MAX_FRAME_SIZE = 512
+    QD_AMQP_MIN_MAX_FRAME_SIZE = 512,
+    QD_AMQP_PORT_INT = 5672,
+    QD_AMQPS_PORT_INT = 5671
 } qd_amqp_constants_t;
 
+extern const char * const QD_AMQP_PORT_STR;
+extern const char * const QD_AMQPS_PORT_STR;
+
+/* Returns -1 if string is not a number or recognized symbolic port name */
+int qd_port_int(const char* port_str);
+
 /**
  * AMQP Performative Tags
  */
@@ -165,4 +173,5 @@ extern const char * const QD_AMQP_COND_ILLEGAL_STATE;
 extern const char * const QD_AMQP_COND_FRAME_SIZE_TOO_SMALL;
 /// @};
 
+
 #endif

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/20b06ac3/src/amqp.c
----------------------------------------------------------------------
diff --git a/src/amqp.c b/src/amqp.c
index cf9f775..d2f2cfe 100644
--- a/src/amqp.c
+++ b/src/amqp.c
@@ -18,6 +18,9 @@
  */
 
 #include <qpid/dispatch/amqp.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
 
 const char * const QD_MA_PREFIX  = "x-opt-qd.";
 const char * const QD_MA_INGRESS = "x-opt-qd.ingress";
@@ -63,3 +66,15 @@ const char * const QD_AMQP_COND_PRECONDITION_FAILED = 
"amqp:precondition-failed"
 const char * const QD_AMQP_COND_RESOURCE_DELETED = "amqp:resource-deleted";
 const char * const QD_AMQP_COND_ILLEGAL_STATE = "amqp:illegal-state";
 const char * const QD_AMQP_COND_FRAME_SIZE_TOO_SMALL = 
"amqp:frame-size-too-small";
+
+const char * const QD_AMQP_PORT_STR = "5672";
+const char * const QD_AMQPS_PORT_STR = "5671";
+
+int qd_port_int(const char* port_str) {
+    if (!strcmp(port_str, QD_AMQP_PORT_STR)) return QD_AMQP_PORT_INT;
+    if (!strcmp(port_str, QD_AMQPS_PORT_STR)) return QD_AMQPS_PORT_INT;
+    errno = 0;
+    unsigned long n = strtoul(port_str, NULL, 10);
+    if (errno || n > 0xFFFF) return -1;
+    return n;
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to