added reactor property in python; added reactor attachment to transports
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/4b0261c1 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/4b0261c1 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/4b0261c1 Branch: refs/heads/master Commit: 4b0261c10fba662602bbf5a47d4b8f412309d4bc Parents: 9f011aa Author: Rafael Schloming <r...@alum.mit.edu> Authored: Wed Jan 14 07:53:46 2015 -0500 Committer: Rafael Schloming <r...@alum.mit.edu> Committed: Wed Jan 14 07:53:46 2015 -0500 ---------------------------------------------------------------------- proton-c/bindings/python/proton/__init__.py | 8 ++++++-- proton-c/src/reactor/connection.c | 1 + proton-c/src/reactor/reactor.c | 3 ++- proton-j/src/main/resources/cengine.py | 3 +++ 4 files changed, 12 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4b0261c1/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 9b6a3c6..8679b06 100644 --- a/proton-c/bindings/python/proton/__init__.py +++ b/proton-c/bindings/python/proton/__init__.py @@ -3307,6 +3307,8 @@ class EventBase(object): def dispatch(self, handler): return dispatch(handler, self.type.method, self) +def _none(x): return None + class Event(EventBase): @staticmethod @@ -3314,12 +3316,13 @@ class Event(EventBase): if impl is None: return None + reactor = wrappers.get("pn_reactor", _none)(pn_event_reactor(impl)) clazz = pn_class_name(pn_event_class(impl)) context = wrappers[clazz](pn_event_context(impl)) if isinstance(context, EventBase): return context else: - return Event(clazz, context, EventType.TYPES[pn_event_type(impl)]) + return Event(reactor, clazz, context, EventType.TYPES[pn_event_type(impl)]) REACTOR_INIT = EventType(PN_REACTOR_INIT, "on_reactor_init") REACTOR_FINAL = EventType(PN_REACTOR_FINAL, "on_reactor_final") @@ -3360,8 +3363,9 @@ class Event(EventBase): TRANSPORT_TAIL_CLOSED = EventType(PN_TRANSPORT_TAIL_CLOSED, "on_transport_tail_closed") TRANSPORT_CLOSED = EventType(PN_TRANSPORT_CLOSED, "on_transport_closed") - def __init__(self, clazz, context, type): + def __init__(self, reactor, clazz, context, type): super(Event, self).__init__(clazz, context, type) + self.reactor = reactor def dispatch(self, handler): return dispatch(handler, self.type.method, self) http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4b0261c1/proton-c/src/reactor/connection.c ---------------------------------------------------------------------- diff --git a/proton-c/src/reactor/connection.c b/proton-c/src/reactor/connection.c index ca67cc2..ec63848 100644 --- a/proton-c/src/reactor/connection.c +++ b/proton-c/src/reactor/connection.c @@ -195,6 +195,7 @@ pn_selectable_t *pn_reactor_selectable_transport(pn_reactor_t *reactor, pn_socke pn_record_t *tr = pn_transport_attachments(transport); pn_record_def(tr, PN_TRANCTX, PN_WEAKREF); pn_record_set(tr, PN_TRANCTX, sel); + pni_record_init_reactor(tr, reactor); pn_reactor_update(reactor, sel); return sel; } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4b0261c1/proton-c/src/reactor/reactor.c ---------------------------------------------------------------------- diff --git a/proton-c/src/reactor/reactor.c b/proton-c/src/reactor/reactor.c index 82b903d..b17473c 100644 --- a/proton-c/src/reactor/reactor.c +++ b/proton-c/src/reactor/reactor.c @@ -253,11 +253,12 @@ pn_reactor_t *pn_event_reactor(pn_event_t *event) { return (pn_reactor_t *) context; case CID_pn_task: return pni_record_get_reactor(pn_task_attachments((pn_task_t *) context)); + case CID_pn_transport: + return pni_record_get_reactor(pn_transport_attachments((pn_transport_t *) context)); case CID_pn_delivery: case CID_pn_link: case CID_pn_session: case CID_pn_connection: - case CID_pn_transport: { pn_connection_t *conn = pni_object_connection(pn_event_class(event), context); pn_record_t *record = pn_connection_attachments(conn); http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4b0261c1/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 8742873..b60c372 100644 --- a/proton-j/src/main/resources/cengine.py +++ b/proton-j/src/main/resources/cengine.py @@ -1000,6 +1000,9 @@ def pn_collector_pop(coll): def pn_collector_free(coll): pass +def pn_event_reactor(event): + return None + def pn_event_connection(event): return wrap(event.getConnection(), pn_connection_wrapper) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org