You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2015/01/16 15:28:18 UTC
qpid-proton git commit: added event attachments
Repository: qpid-proton
Updated Branches:
refs/heads/master 1420615f5 -> 3b0346fb8
added event attachments
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/3b0346fb
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/3b0346fb
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/3b0346fb
Branch: refs/heads/master
Commit: 3b0346fb8314560236cb556ec21c03d10adb4e61
Parents: 1420615
Author: Rafael Schloming <rh...@alum.mit.edu>
Authored: Fri Jan 16 09:28:08 2015 -0500
Committer: Rafael Schloming <rh...@alum.mit.edu>
Committed: Fri Jan 16 09:28:08 2015 -0500
----------------------------------------------------------------------
proton-c/bindings/python/proton/__init__.py | 5 +++-
proton-c/include/proton/event.h | 8 +++++++
proton-c/src/events/event.c | 25 +++++++++++++++-----
proton-j/src/main/resources/cengine.py | 29 ++++++++++++++++--------
4 files changed, 50 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/3b0346fb/proton-c/bindings/python/proton/__init__.py
----------------------------------------------------------------------
diff --git a/proton-c/bindings/python/proton/__init__.py b/proton-c/bindings/python/proton/__init__.py
index 22cb500..dd22bcc 100644
--- a/proton-c/bindings/python/proton/__init__.py
+++ b/proton-c/bindings/python/proton/__init__.py
@@ -3363,7 +3363,10 @@ class Event(Wrapper, EventBase):
return event
def __init__(self, impl):
- Wrapper.__init__(self, impl)
+ Wrapper.__init__(self, impl, pn_event_attachments)
+
+ def _init(self):
+ pass
@property
def clazz(self):
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/3b0346fb/proton-c/include/proton/event.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/event.h b/proton-c/include/proton/event.h
index 9db25dd..34d60c3 100644
--- a/proton-c/include/proton/event.h
+++ b/proton-c/include/proton/event.h
@@ -412,6 +412,14 @@ PN_EXTERN pn_delivery_t *pn_event_delivery(pn_event_t *event);
*/
PN_EXTERN pn_transport_t *pn_event_transport(pn_event_t *event);
+/**
+ * Get any attachments associated with an event.
+ *
+ * @param[in] event an event object
+ * @return the record holding the attachments
+ */
+PN_EXTERN pn_record_t *pn_event_attachments(pn_event_t *event);
+
#ifdef __cplusplus
}
#endif
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/3b0346fb/proton-c/src/events/event.c
----------------------------------------------------------------------
diff --git a/proton-c/src/events/event.c b/proton-c/src/events/event.c
index a1d959b..1670704 100644
--- a/proton-c/src/events/event.c
+++ b/proton-c/src/events/event.c
@@ -12,7 +12,8 @@ struct pn_collector_t {
struct pn_event_t {
pn_list_t *pool;
const pn_class_t *clazz;
- void *context; // depends on type
+ void *context; // depends on clazz
+ pn_record_t *attachments;
pn_event_t *next;
pn_event_type_t type;
};
@@ -88,7 +89,6 @@ void pn_collector_free(pn_collector_t *collector)
}
pn_event_t *pn_event(void);
-static void pn_event_initialize(pn_event_t *event);
pn_event_t *pn_collector_put(pn_collector_t *collector,
const pn_class_t *clazz, void *context,
@@ -113,9 +113,7 @@ pn_event_t *pn_collector_put(pn_collector_t *collector,
pn_event_t *event = (pn_event_t *) pn_list_pop(collector->pool);
- if (event) {
- pn_event_initialize(event);
- } else {
+ if (!event) {
event = pn_event();
}
@@ -167,20 +165,27 @@ static void pn_event_initialize(pn_event_t *event)
event->clazz = NULL;
event->context = NULL;
event->next = NULL;
+ event->attachments = pn_record();
}
static void pn_event_finalize(pn_event_t *event) {
// decref before adding to the free list
if (event->clazz && event->context) {
pn_class_decref(event->clazz, event->context);
- event->context = NULL;
}
pn_list_t *pool = event->pool;
if (pool && pn_refcount(pool) > 1) {
event->pool = NULL;
+ event->type = PN_EVENT_NONE;
+ event->clazz = NULL;
+ event->context = NULL;
+ event->next = NULL;
+ pn_record_clear(event->attachments);
pn_list_add(pool, event);
+ } else {
+ pn_decref(event->attachments);
}
pn_decref(pool);
@@ -228,6 +233,14 @@ void *pn_event_context(pn_event_t *event)
return event->context;
}
+pn_record_t *pn_event_attachments(pn_event_t *event)
+{
+ assert(event);
+ return event->attachments;
+}
+
+
+
const char *pn_event_type_name(pn_event_type_t type)
{
switch (type) {
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/3b0346fb/proton-j/src/main/resources/cengine.py
----------------------------------------------------------------------
diff --git a/proton-j/src/main/resources/cengine.py b/proton-j/src/main/resources/cengine.py
index d9dfde0..ad70587 100644
--- a/proton-j/src/main/resources/cengine.py
+++ b/proton-j/src/main/resources/cengine.py
@@ -991,10 +991,16 @@ def pn_collector():
def pn_connection_collect(conn, coll):
conn.impl.collect(coll)
+class pn_event:
+
+ def __init__(self, impl):
+ self.impl = impl
+ self.attachments = {}
+
def pn_collector_peek(coll):
ev = coll.peek()
if ev:
- return ev.copy()
+ return pn_event(ev.copy())
else:
return None
@@ -1008,19 +1014,19 @@ def pn_event_reactor(event):
return None
def pn_event_connection(event):
- return wrap(event.getConnection(), pn_connection_wrapper)
+ return wrap(event.impl.getConnection(), pn_connection_wrapper)
def pn_event_session(event):
- return wrap(event.getSession(), pn_session_wrapper)
+ return wrap(event.impl.getSession(), pn_session_wrapper)
def pn_event_link(event):
- return wrap(event.getLink(), pn_link_wrapper)
+ return wrap(event.impl.getLink(), pn_link_wrapper)
def pn_event_delivery(event):
- return wrap(event.getDelivery(), pn_delivery_wrapper)
+ return wrap(event.impl.getDelivery(), pn_delivery_wrapper)
def pn_event_transport(event):
- return wrap(event.getTransport(), pn_transport_wrapper)
+ return wrap(event.impl.getTransport(), pn_transport_wrapper)
from org.apache.qpid.proton.engine.impl import ConnectionImpl, SessionImpl, \
SenderImpl, ReceiverImpl, DeliveryImpl, TransportImpl
@@ -1044,17 +1050,20 @@ wrappers = {
}
def pn_event_class(event):
- ctx = event.getContext()
+ ctx = event.impl.getContext()
return J2C.get(ctx.getClass(), "pn_void")
def pn_event_context(event):
- return wrappers[pn_event_class(event)](event.getContext())
+ return wrappers[pn_event_class(event)](event.impl.getContext())
def pn_event_type(event):
- return event.getType()
+ return event.impl.getType()
def pn_event_type_name(etype):
return str(etype)
def pn_event_category(event):
- return event.getCategory()
+ return event.impl.getCategory()
+
+def pn_event_attachments(event):
+ return event.attachments
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org