You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2019/11/28 02:36:08 UTC

[qpid-proton] branch master updated (3f08c66 -> 05c2d99)

This is an automated email from the ASF dual-hosted git repository.

astitcher pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/qpid-proton.git.


    from 3f08c66  PROTON-2138: add test to verify coordinator target capability parsing
     new 6b03c1a  PROTON-2131: Small change to logger API to avoid unecessary warnings
     new 05c2d99  PROTON-2150: Small reorganisation of object system to allow finer grained memory tracking

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 c/include/proton/logger.h   |  4 ++--
 c/include/proton/object.h   | 52 ++++++++++++++++++++++-----------------------
 c/src/core/logger.c         |  4 ++--
 c/src/core/logger_private.h | 10 ++++-----
 c/src/proactor/epoll.c      | 16 +++++++-------
 c/src/proactor/libuv.c      | 20 ++++++++---------
 c/src/proactor/win_iocp.c   | 18 ++++++++--------
 7 files changed, 61 insertions(+), 63 deletions(-)


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


[qpid-proton] 01/02: PROTON-2131: Small change to logger API to avoid unecessary warnings

Posted by as...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

astitcher pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/qpid-proton.git

commit 6b03c1a4cf401ea279c664ac531de561cbed9305
Author: Andrew Stitcher <as...@apache.org>
AuthorDate: Tue Nov 26 21:54:14 2019 -0500

    PROTON-2131: Small change to logger API to avoid unecessary warnings
---
 c/include/proton/logger.h   |  4 ++--
 c/src/core/logger.c         |  4 ++--
 c/src/core/logger_private.h | 10 +++++-----
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/c/include/proton/logger.h b/c/include/proton/logger.h
index 35f330b..68e5f29 100644
--- a/c/include/proton/logger.h
+++ b/c/include/proton/logger.h
@@ -167,7 +167,7 @@ PN_EXTERN const char *pn_logger_subsystem_name(pn_log_subsystem_t subsystem);
  * @param[in] subsystem bits representing subsystems to turn on trace for
  * @param[in] level bits representing log levels to turn on trace for
  */
-PN_EXTERN void pn_logger_set_mask(pn_logger_t *logger, pn_log_subsystem_t subsystem, pn_log_level_t level);
+PN_EXTERN void pn_logger_set_mask(pn_logger_t *logger, uint16_t subsystem, uint16_t level);
 
 /**
  * Clear a logger's tracing flags.
@@ -189,7 +189,7 @@ PN_EXTERN void pn_logger_set_mask(pn_logger_t *logger, pn_log_subsystem_t subsys
  * @param[in] subsystem bits representing subsystems to turn off trace for
  * @param[in] level bits representing log levels to turn off trace for
  */
-PN_EXTERN void pn_logger_reset_mask(pn_logger_t *logger, pn_log_subsystem_t subsystem, pn_log_level_t severity);
+PN_EXTERN void pn_logger_reset_mask(pn_logger_t *logger, uint16_t subsystem, uint16_t severity);
 
 /**
  * Set the tracing function used by a logger.
diff --git a/c/src/core/logger.c b/c/src/core/logger.c
index 45743ef..6893b40 100644
--- a/c/src/core/logger.c
+++ b/c/src/core/logger.c
@@ -150,13 +150,13 @@ pn_logger_t *pn_default_logger(void)
   return &the_default_logger;
 }
 
-void pn_logger_set_mask(pn_logger_t *logger, pn_log_subsystem_t subsystem, pn_log_level_t severity)
+void pn_logger_set_mask(pn_logger_t *logger, uint16_t subsystem, uint16_t severity)
 {
   logger->sev_mask = (pn_log_level_t) (logger->sev_mask | severity);
   logger->sub_mask = (pn_log_subsystem_t) (logger->sub_mask | subsystem);
 }
 
-void pn_logger_reset_mask(pn_logger_t *logger, pn_log_subsystem_t subsystem, pn_log_level_t severity)
+void pn_logger_reset_mask(pn_logger_t *logger, uint16_t subsystem, uint16_t severity)
 {
   logger->sev_mask = (pn_log_level_t) (logger->sev_mask & ~severity);
   logger->sub_mask = (pn_log_subsystem_t) (logger->sub_mask & ~subsystem);
diff --git a/c/src/core/logger_private.h b/c/src/core/logger_private.h
index d48e97e..9c6231b 100644
--- a/c/src/core/logger_private.h
+++ b/c/src/core/logger_private.h
@@ -22,11 +22,11 @@
 #include <proton/logger.h>
 
 struct pn_logger_t {
-    pn_log_sink_t       sink;
-    intptr_t            sink_context;
-    pn_log_level_t   sev_mask;
-    pn_log_subsystem_t  sub_mask;
-    pn_string_t        *scratch;
+    pn_log_sink_t sink;
+    intptr_t      sink_context;
+    pn_string_t  *scratch;
+    uint16_t      sub_mask;
+    uint16_t      sev_mask;
 };
 
 void pni_init_default_logger(void);


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


[qpid-proton] 02/02: PROTON-2150: Small reorganisation of object system to allow finer grained memory tracking

Posted by as...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

astitcher pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/qpid-proton.git

commit 05c2d997521b95258592fd9ceb8469403dfa6f14
Author: Andrew Stitcher <as...@apache.org>
AuthorDate: Wed Nov 27 19:06:08 2019 -0500

    PROTON-2150: Small reorganisation of object system to allow finer grained memory tracking
---
 c/include/proton/object.h | 52 +++++++++++++++++++++++------------------------
 c/src/proactor/epoll.c    | 16 +++++++--------
 c/src/proactor/libuv.c    | 20 +++++++++---------
 c/src/proactor/win_iocp.c | 18 ++++++++--------
 4 files changed, 52 insertions(+), 54 deletions(-)

diff --git a/c/include/proton/object.h b/c/include/proton/object.h
index 2761091..24d2615 100644
--- a/c/include/proton/object.h
+++ b/c/include/proton/object.h
@@ -71,6 +71,8 @@ PN_EXTERN extern const pn_class_t PN_OBJECT[];
 PN_EXTERN extern const pn_class_t PN_VOID[];
 PN_EXTERN extern const pn_class_t PN_WEAKREF[];
 
+#define PN_CLASSCLASS(PREFIX) PREFIX ## __class
+
 #define PN_CLASSDEF(PREFIX)                                               \
 static void PREFIX ## _initialize_cast(void *object) {                    \
   PREFIX ## _initialize((PREFIX ## _t *) object);                         \
@@ -107,8 +109,7 @@ static int PREFIX ## _inspect_cast(void *object, pn_string_t *str) {      \
   }                                                                       \
 }                                                                         \
                                                                           \
-const pn_class_t *PREFIX ## __class(void) {                               \
-  static const pn_class_t clazz = {                                       \
+const pn_class_t PN_CLASSCLASS(PREFIX)[] = {{                             \
     #PREFIX,                                                              \
     CID_ ## PREFIX,                                                       \
     pn_object_new,                                                        \
@@ -122,12 +123,10 @@ const pn_class_t *PREFIX ## __class(void) {                               \
     PREFIX ## _hashcode_cast,                                             \
     PREFIX ## _compare_cast,                                              \
     PREFIX ## _inspect_cast                                               \
-  };                                                                      \
-  return &clazz;                                                          \
-}                                                                         \
+}};                                                                       \
                                                                           \
 PREFIX ## _t *PREFIX ## _new(void) {                                      \
-  return (PREFIX ## _t *) pn_class_new(PREFIX ## __class(),               \
+  return (PREFIX ## _t *) pn_class_new(PN_CLASSCLASS(PREFIX),             \
                                        sizeof(PREFIX ## _t));             \
 }
 
@@ -164,27 +163,26 @@ PREFIX ## _t *PREFIX ## _new(void) {                                      \
 }
 
 /* Class to identify a plain C struct in a pn_event_t. No refcounting or memory management. */
-#define PN_STRUCT_CLASSDEF(PREFIX, CID)                                 \
-  const pn_class_t *PREFIX ## __class(void);                            \
-  static const pn_class_t *PREFIX ## _reify(void *p) { return PREFIX ## __class(); } \
-  const pn_class_t *PREFIX  ##  __class(void) {                         \
-  static const pn_class_t clazz = {                                     \
-    #PREFIX,                                                            \
-    CID,                                                                \
-    NULL, /*_new*/                                                      \
-    NULL, /*_initialize*/                                               \
-    pn_void_incref,                                                     \
-    pn_void_decref,                                                     \
-    pn_void_refcount,                                                   \
-    NULL, /* _finalize */                                               \
-    NULL, /* _free */                                                   \
-    PREFIX ## _reify,                                                   \
-    pn_void_hashcode,                                                   \
-    pn_void_compare,                                                    \
-    pn_void_inspect                                                     \
-    };                                                                  \
-  return &clazz;                                                        \
-  }
+#define PN_STRUCT_CLASSDEF(PREFIX)                  \
+static const pn_class_t *PREFIX ## _reify(void *p); \
+const pn_class_t PN_CLASSCLASS(PREFIX)[] = {{       \
+  #PREFIX,                                          \
+  CID_ ## PREFIX,                                   \
+  NULL, /*_new*/                                    \
+  NULL, /*_initialize*/                             \
+  pn_void_incref,                                   \
+  pn_void_decref,                                   \
+  pn_void_refcount,                                 \
+  NULL, /* _finalize */                             \
+  NULL, /* _free */                                 \
+  PREFIX ## _reify,                                 \
+  pn_void_hashcode,                                 \
+  pn_void_compare,                                  \
+  pn_void_inspect                                   \
+}};                                                 \
+const pn_class_t *PREFIX ## _reify(void *p) {       \
+  return PN_CLASSCLASS(PREFIX);                     \
+}
 
 PN_EXTERN pn_cid_t pn_class_id(const pn_class_t *clazz);
 PN_EXTERN const char *pn_class_name(const pn_class_t *clazz);
diff --git a/c/src/proactor/epoll.c b/c/src/proactor/epoll.c
index a360ff0..e68e7c8 100644
--- a/c/src/proactor/epoll.c
+++ b/c/src/proactor/epoll.c
@@ -278,8 +278,8 @@ const char *AMQP_PORT_NAME = "amqp";
 /* pn_proactor_t and pn_listener_t are plain C structs with normal memory management.
    Class definitions are for identification as pn_event_t context only.
 */
-PN_STRUCT_CLASSDEF(pn_proactor, CID_pn_proactor)
-PN_STRUCT_CLASSDEF(pn_listener, CID_pn_listener)
+PN_STRUCT_CLASSDEF(pn_proactor)
+PN_STRUCT_CLASSDEF(pn_listener)
 
 static bool start_polling(epoll_extended_t *ee, int epollfd) {
   if (ee->polling)
@@ -1460,7 +1460,7 @@ void pn_proactor_release_connection(pn_connection_t *c) {
 // ========================================================================
 
 pn_listener_t *pn_event_listener(pn_event_t *e) {
-  return (pn_event_class(e) == pn_listener__class()) ? (pn_listener_t*)pn_event_context(e) : NULL;
+  return (pn_event_class(e) == PN_CLASSCLASS(pn_listener)) ? (pn_listener_t*)pn_event_context(e) : NULL;
 }
 
 pn_listener_t *pn_listener() {
@@ -1563,7 +1563,7 @@ void pn_proactor_listen(pn_proactor_t *p, pn_listener_t *l, const char *addr, in
       psocket_error(&l->acceptors[0].psocket, errno, "listen on");
     }
   } else {
-    pn_collector_put(l->collector, pn_listener__class(), l, PN_LISTENER_OPEN);
+    pn_collector_put(l->collector, PN_CLASSCLASS(pn_listener), l, PN_LISTENER_OPEN);
   }
   proactor_add(&l->context);
   unlock(&l->context.mutex);
@@ -1639,7 +1639,7 @@ static void listener_begin_close(pn_listener_t* l) {
     /* Remove all acceptors from the overflow list.  closing flag prevents re-insertion.*/
     proactor_rearm_overflow(pn_listener_proactor(l));
     lock(&l->context.mutex);
-    pn_collector_put(l->collector, pn_listener__class(), l, PN_LISTENER_CLOSE);
+    pn_collector_put(l->collector, PN_CLASSCLASS(pn_listener), l, PN_LISTENER_CLOSE);
   }
 }
 
@@ -1738,7 +1738,7 @@ static pn_event_t *listener_batch_next(pn_event_batch_t *batch) {
   pn_event_t *e = pn_collector_next(l->collector);
   if (!e && l->pending_count && !l->unclaimed) {
     // empty collector means pn_collector_put() will not coalesce
-    pn_collector_put(l->collector, pn_listener__class(), l, PN_LISTENER_ACCEPT);
+    pn_collector_put(l->collector, PN_CLASSCLASS(pn_listener), l, PN_LISTENER_ACCEPT);
     l->unclaimed = true;
     l->pending_count--;
     e = pn_collector_next(l->collector);
@@ -1928,7 +1928,7 @@ void pn_proactor_free(pn_proactor_t *p) {
 }
 
 pn_proactor_t *pn_event_proactor(pn_event_t *e) {
-  if (pn_event_class(e) == pn_proactor__class()) return (pn_proactor_t*)pn_event_context(e);
+  if (pn_event_class(e) == PN_CLASSCLASS(pn_proactor)) return (pn_proactor_t*)pn_event_context(e);
   pn_listener_t *l = pn_event_listener(e);
   if (l) return l->acceptors[0].psocket.proactor;
   pn_connection_t *c = pn_event_connection(e);
@@ -1937,7 +1937,7 @@ pn_proactor_t *pn_event_proactor(pn_event_t *e) {
 }
 
 static void proactor_add_event(pn_proactor_t *p, pn_event_type_t t) {
-  pn_collector_put(p->collector, pn_proactor__class(), p, t);
+  pn_collector_put(p->collector, PN_CLASSCLASS(pn_proactor), p, t);
 }
 
 // Call with lock held.  Leave unchanged if events pending.
diff --git a/c/src/proactor/libuv.c b/c/src/proactor/libuv.c
index 2fabd43..2eb6e1c 100644
--- a/c/src/proactor/libuv.c
+++ b/c/src/proactor/libuv.c
@@ -75,8 +75,8 @@ const char *AMQP_PORT_NAME = "amqp";
 /* pn_proactor_t and pn_listener_t are plain C structs with normal memory management.
    CLASSDEF is for identification when used as a pn_event_t context.
 */
-PN_STRUCT_CLASSDEF(pn_proactor, CID_pn_proactor)
-PN_STRUCT_CLASSDEF(pn_listener, CID_pn_listener)
+PN_STRUCT_CLASSDEF(pn_proactor)
+PN_STRUCT_CLASSDEF(pn_listener)
 
 
 /* ================ Queues ================ */
@@ -149,7 +149,7 @@ typedef struct lsocket_t {
   struct lsocket_t *next;
 } lsocket_t;
 
-PN_STRUCT_CLASSDEF(lsocket, CID_pn_listener_socket)
+PN_STRUCT_CLASSDEF(pn_listener_socket)
 
 typedef enum { W_NONE, W_PENDING, W_CLOSED } wake_state;
 
@@ -558,7 +558,7 @@ static void on_connection(uv_stream_t* server, int err) {
     listener_error(l, err, "on incoming connection");
   } else {
     uv_mutex_lock(&l->lock);
-    pn_collector_put(l->collector, lsocket__class(), ls, PN_LISTENER_ACCEPT);
+    pn_collector_put(l->collector, PN_CLASSCLASS(pn_listener_socket), ls, PN_LISTENER_ACCEPT);
     uv_mutex_unlock(&l->lock);
   }
   work_notify(&l->work);
@@ -674,7 +674,7 @@ static void leader_listen_lh(pn_listener_t *l) {
   if (err) {
     listener_error_lh(l, err, "listening on");
   } else {
-    pn_collector_put(l->collector, pn_listener__class(), l, PN_LISTENER_OPEN);
+    pn_collector_put(l->collector, PN_CLASSCLASS(pn_listener), l, PN_LISTENER_OPEN);
   }
 }
 
@@ -737,7 +737,7 @@ static bool leader_process_listener(pn_listener_t *l) {
    case L_CLOSING:              /* Closing - can we send PN_LISTENER_CLOSE? */
     if (!l->lsockets) {
       l->state = L_CLOSED;
-      pn_collector_put(l->collector, pn_listener__class(), l, PN_LISTENER_CLOSE);
+      pn_collector_put(l->collector, PN_CLASSCLASS(pn_listener), l, PN_LISTENER_CLOSE);
     }
     break;
 
@@ -814,7 +814,7 @@ static void alloc_read_buffer(uv_handle_t* stream, size_t size, uv_buf_t* buf) {
 
 /* Set the event in the proactor's batch  */
 static pn_event_batch_t *proactor_batch_lh(pn_proactor_t *p, pn_event_type_t t) {
-  pn_collector_put(p->collector, pn_proactor__class(), p, t);
+  pn_collector_put(p->collector, PN_CLASSCLASS(pn_proactor), p, t);
   p->batch_working = true;
   return &p->batch;
 }
@@ -1087,9 +1087,9 @@ void pn_proactor_done(pn_proactor_t *p, pn_event_batch_t *batch) {
 }
 
 pn_listener_t *pn_event_listener(pn_event_t *e) {
-  if (pn_event_class(e) == pn_listener__class()) {
+  if (pn_event_class(e) == PN_CLASSCLASS(pn_listener)) {
     return (pn_listener_t*)pn_event_context(e);
-  } else if (pn_event_class(e) == lsocket__class()) {
+  } else if (pn_event_class(e) == PN_CLASSCLASS(pn_listener_socket)) {
     return ((lsocket_t*)pn_event_context(e))->parent;
   } else {
     return NULL;
@@ -1097,7 +1097,7 @@ pn_listener_t *pn_event_listener(pn_event_t *e) {
 }
 
 pn_proactor_t *pn_event_proactor(pn_event_t *e) {
-  if (pn_event_class(e) == pn_proactor__class()) {
+  if (pn_event_class(e) == PN_CLASSCLASS(pn_proactor)) {
     return (pn_proactor_t*)pn_event_context(e);
   }
   pn_listener_t *l = pn_event_listener(e);
diff --git a/c/src/proactor/win_iocp.c b/c/src/proactor/win_iocp.c
index 0f0a54b..07a3a78 100644
--- a/c/src/proactor/win_iocp.c
+++ b/c/src/proactor/win_iocp.c
@@ -1603,8 +1603,8 @@ PN_HANDLE(PN_PROACTOR)
 /* pn_proactor_t and pn_listener_t are plain C structs with normal memory management.
    Class definitions are for identification as pn_event_t context only.
 */
-PN_STRUCT_CLASSDEF(pn_proactor, CID_pn_proactor)
-PN_STRUCT_CLASSDEF(pn_listener, CID_pn_listener)
+PN_STRUCT_CLASSDEF(pn_proactor)
+PN_STRUCT_CLASSDEF(pn_listener)
 
 /* Completion serialization context common to connection and listener. */
 /* And also the reaper singleton (which has no socket */
@@ -2151,11 +2151,11 @@ static pconnection_t *get_pconnection(pn_connection_t* c) {
 
 
 pn_listener_t *pn_event_listener(pn_event_t *e) {
-  return (pn_event_class(e) == pn_listener__class()) ? (pn_listener_t*)pn_event_context(e) : NULL;
+  return (pn_event_class(e) == PN_CLASSCLASS(pn_listener)) ? (pn_listener_t*)pn_event_context(e) : NULL;
 }
 
 pn_proactor_t *pn_event_proactor(pn_event_t *e) {
-  if (pn_event_class(e) == pn_proactor__class()) return (pn_proactor_t*)pn_event_context(e);
+  if (pn_event_class(e) == PN_CLASSCLASS(pn_proactor)) return (pn_proactor_t*)pn_event_context(e);
   pn_listener_t *l = pn_event_listener(e);
   if (l) return l->context.proactor;
   pn_connection_t *c = pn_event_connection(e);
@@ -2470,7 +2470,7 @@ void pn_proactor_done(pn_proactor_t *p, pn_event_batch_t *batch) {
 }
 
 static void proactor_add_event(pn_proactor_t *p, pn_event_type_t t) {
-  pn_collector_put(p->collector, pn_proactor__class(), p, t);
+  pn_collector_put(p->collector, PN_CLASSCLASS(pn_proactor), p, t);
 }
 
 static pn_event_batch_t *proactor_process(pn_proactor_t *p) {
@@ -2826,7 +2826,7 @@ void pn_proactor_listen(pn_proactor_t *p, pn_listener_t *l, const char *addr, in
       psocket_error(l->psockets, wsa_err, "listen on");
     }
   } else {
-    pn_collector_put(l->collector, pn_listener__class(), l, PN_LISTENER_OPEN);
+    pn_collector_put(l->collector, PN_CLASSCLASS(pn_listener), l, PN_LISTENER_OPEN);
   }
   wakeup(l->psockets);
 }
@@ -2841,7 +2841,7 @@ static pn_event_batch_t *batch_owned(pn_listener_t *l) {
     }
     assert(!(l->context.closing && l->pending_events));
     if (l->pending_events) {
-      pn_collector_put(l->collector, pn_listener__class(), l, PN_LISTENER_ACCEPT);
+      pn_collector_put(l->collector, PN_CLASSCLASS(pn_listener), l, PN_LISTENER_ACCEPT);
       l->pending_events--;
       l->context.working = true;
       return &l->batch;
@@ -3035,7 +3035,7 @@ static pn_event_t *listener_batch_next(pn_event_batch_t *batch) {
   {
     csguard g(&l->context.cslock);
     if (!listener_has_event(l) && l->pending_events) {
-      pn_collector_put(l->collector, pn_listener__class(), l, PN_LISTENER_ACCEPT);
+      pn_collector_put(l->collector, PN_CLASSCLASS(pn_listener), l, PN_LISTENER_ACCEPT);
       l->pending_events--;
     }
     pn_event_t *e = pn_collector_next(l->collector);
@@ -3100,7 +3100,7 @@ static void listener_begin_close(pn_listener_t* l) {
   l->context.closing = true;
   listener_close_all(l);
   release_pending_accepts(l);
-  pn_collector_put(l->collector, pn_listener__class(), l, PN_LISTENER_CLOSE);
+  pn_collector_put(l->collector, PN_CLASSCLASS(pn_listener), l, PN_LISTENER_CLOSE);
 }
 
 void pn_listener_close(pn_listener_t* l) {


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