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

Reply via email to