You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2017/06/09 01:26:03 UTC

[40/50] [abbrv] qpid-proton git commit: PROTON-1495: c proactor error naming and formatting

PROTON-1495: c proactor error naming and formatting

Use consistent condition name "proton:io" for IO-related error conditions.
Consistent error formmatting for proactor implementations
receive.c example minor fix - missing return code


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

Branch: refs/heads/go1
Commit: ad52e3abb49da97436269ee78c07aba20ccaf742
Parents: 0850526
Author: Alan Conway <ac...@redhat.com>
Authored: Thu Jun 1 15:42:33 2017 -0400
Committer: Alan Conway <ac...@redhat.com>
Committed: Wed Jun 7 09:59:29 2017 -0400

----------------------------------------------------------------------
 examples/c/proactor/receive.c             |  1 +
 proton-c/src/proactor/epoll.c             |  5 ++---
 proton-c/src/proactor/libuv.c             | 13 +++++--------
 proton-c/src/proactor/proactor-internal.c | 10 ++++++++++
 proton-c/src/proactor/proactor-internal.h | 16 +++++++++++++++-
 5 files changed, 33 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ad52e3ab/examples/c/proactor/receive.c
----------------------------------------------------------------------
diff --git a/examples/c/proactor/receive.c b/examples/c/proactor/receive.c
index ddf0a35..1b9e3f9 100644
--- a/examples/c/proactor/receive.c
+++ b/examples/c/proactor/receive.c
@@ -184,4 +184,5 @@ int main(int argc, char **argv) {
   pn_proactor_connect(app.proactor, pn_connection(), addr);
   run(&app);
   pn_proactor_free(app.proactor);
+  return exit_code;
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ad52e3ab/proton-c/src/proactor/epoll.c
----------------------------------------------------------------------
diff --git a/proton-c/src/proactor/epoll.c b/proton-c/src/proactor/epoll.c
index 3e5327e..3a0ea29 100644
--- a/proton-c/src/proactor/epoll.c
+++ b/proton-c/src/proactor/epoll.c
@@ -245,7 +245,6 @@ pn_timestamp_t pn_i_now2(void)
 // Proactor common code
 // ========================================================================
 
-const char *COND_NAME = "proactor";
 const char *AMQP_PORT = "5672";
 const char *AMQP_PORT_NAME = "amqp";
 
@@ -586,13 +585,13 @@ static void psocket_error(psocket_t *ps, int err, const char* what) {
   if (!ps->listener) {
     pn_connection_driver_t *driver = &psocket_pconnection(ps)->driver;
     pn_connection_driver_bind(driver); /* Bind so errors will be reported */
-    pn_connection_driver_errorf(driver, COND_NAME, "%s %s:%s: %s",
+    pn_connection_driver_errorf(driver, PNI_IO_CONDITION, "%s %s:%s: %s",
                                 what, ps->host, ps->port,
                                 strerror(err));
     pn_connection_driver_close(driver);
   } else {
     pn_listener_t *l = psocket_listener(ps);
-    pn_condition_format(l->condition, COND_NAME, "%s %s:%s: %s",
+    pn_condition_format(l->condition, PNI_IO_CONDITION, "%s %s:%s: %s",
                         what, ps->host, ps->port,
                         strerror(err));
     listener_begin_close(l);

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ad52e3ab/proton-c/src/proactor/libuv.c
----------------------------------------------------------------------
diff --git a/proton-c/src/proactor/libuv.c b/proton-c/src/proactor/libuv.c
index e632f10..a851c4e 100644
--- a/proton-c/src/proactor/libuv.c
+++ b/proton-c/src/proactor/libuv.c
@@ -456,9 +456,8 @@ static void pconnection_set_error(pconnection_t *pc, int err, const char* what)
   pn_connection_driver_t *driver = &pc->driver;
   pn_connection_driver_bind(driver); /* Make sure we are bound so errors will be reported */
   if (!pn_condition_is_set(pn_transport_condition(driver->transport))) {
-    pn_connection_driver_errorf(driver, uv_err_name(err), "%s %s:%s: %s",
-                                what, pc->addr.host, pc->addr.port,
-                                uv_strerror(err));
+    pni_proactor_set_cond(pn_transport_condition(driver->transport),
+                                what, pc->addr.host , pc->addr.port, uv_strerror(err));
   }
 }
 
@@ -473,9 +472,7 @@ static void pconnection_error(pconnection_t *pc, int err, const char* what) {
 static void listener_error_lh(pn_listener_t *l, int err, const char* what) {
   assert(err);
   if (!pn_condition_is_set(l->condition)) {
-    pn_condition_format(l->condition, uv_err_name(err), "%s %s:%s: %s",
-                        what, l->addr.host, l->addr.port,
-                        uv_strerror(err));
+    pni_proactor_set_cond(l->condition, what, l->addr.host, l->addr.port, uv_strerror(err));
   }
   listener_close_lh(l);
 }
@@ -659,11 +656,11 @@ static void leader_listen_lh(pn_listener_t *l) {
       err = 0;
     }
   }
-  /* Always put an OPEN event for symmetry, even if we immediately close with err */
-  pn_collector_put(l->collector, pn_listener__class(), l, PN_LISTENER_OPEN);
   if (err) {
     listener_error_lh(l, err, "listening on");
   }
+  /* Always put an OPEN event for symmetry, even if we have an error. */
+  pn_collector_put(l->collector, pn_listener__class(), l, PN_LISTENER_OPEN);
 }
 
 void pn_listener_free(pn_listener_t *l) {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ad52e3ab/proton-c/src/proactor/proactor-internal.c
----------------------------------------------------------------------
diff --git a/proton-c/src/proactor/proactor-internal.c b/proton-c/src/proactor/proactor-internal.c
index af7b057..3525c71 100644
--- a/proton-c/src/proactor/proactor-internal.c
+++ b/proton-c/src/proactor/proactor-internal.c
@@ -34,6 +34,8 @@ static const char *AMQP_PORT_NAME = "amqp";
 static const char *AMQPS_PORT = "5671";
 static const char *AMQPS_PORT_NAME = "amqps";
 
+const char *PNI_IO_CONDITION = "proton:io";
+
 int pn_proactor_addr(char *buf, size_t len, const char *host, const char *port) {
   return snprintf(buf, len, "%s:%s", host ? host : "", port ? port : "");
 }
@@ -64,3 +66,11 @@ int pni_parse_addr(const char *addr, char *buf, size_t len, const char **host, c
   }
   return 0;
 }
+
+static inline const char *nonull(const char *str) { return str ? str : ""; }
+
+void pni_proactor_set_cond(
+  pn_condition_t *cond, const char *what, const char *host, const char *port, const char *msg)
+{
+  pn_condition_format(cond, PNI_IO_CONDITION, "%s - %s %s:%s", msg, what, nonull(host), nonull(port));
+}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ad52e3ab/proton-c/src/proactor/proactor-internal.h
----------------------------------------------------------------------
diff --git a/proton-c/src/proactor/proactor-internal.h b/proton-c/src/proactor/proactor-internal.h
index 894cb5b..5307a45 100644
--- a/proton-c/src/proactor/proactor-internal.h
+++ b/proton-c/src/proactor/proactor-internal.h
@@ -22,8 +22,11 @@
 
 #include <proton/type_compat.h>
 #include <proton/import_export.h>
+#include <proton/condition.h>
 
-/*
+/* NOTE PNP_EXTERN is for use by proton-internal tests  */
+
+/**
  * Parse a pn_proactor_addr string, copy data into buf as necessary.
  * Set *host and *port to point to the host and port strings.
  *
@@ -34,4 +37,15 @@
  */
 PNP_EXTERN int pni_parse_addr(const char *addr, char *buf, size_t len, const char **host, const char **port);
 
+/**
+ * Condition name for error conditions related to proton-IO.
+ */
+extern const char *PNI_IO_CONDITION;
+
+/**
+ * Format a proactor error condition with message "<what> (<host>:<port>): <msg>"
+ */
+void pni_proactor_set_cond(
+  pn_condition_t *cond, const char *what, const char *msg, const char *host, const char *port);
+
 #endif // PROACTOR_NETADDR_INTERNAL_H


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org