You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2014/10/10 14:51:19 UTC

svn commit: r1630817 - in /qpid/proton/branches/examples: proton-c/bindings/python/ proton-c/include/proton/ proton-c/src/engine/ proton-c/src/events/ proton-c/src/object/ proton-c/src/transport/ proton-j/src/main/java/org/apache/qpid/proton/engine/ pr...

Author: gsim
Date: Fri Oct 10 12:51:19 2014
New Revision: 1630817

URL: http://svn.apache.org/r1630817
Log:
made pn_collector_put public and modified collector to work with regular void * pointers as well as pn_object pointers

Added:
    qpid/proton/branches/examples/proton-j/src/main/resources/cobject.py
      - copied, changed from r1630816, qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py
Modified:
    qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
    qpid/proton/branches/examples/proton-c/bindings/python/proton.py
    qpid/proton/branches/examples/proton-c/include/proton/cproton.i
    qpid/proton/branches/examples/proton-c/include/proton/event.h
    qpid/proton/branches/examples/proton-c/include/proton/object.h
    qpid/proton/branches/examples/proton-c/src/engine/engine.c
    qpid/proton/branches/examples/proton-c/src/events/event.c
    qpid/proton/branches/examples/proton-c/src/object/object.c
    qpid/proton/branches/examples/proton-c/src/transport/transport.c
    qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java
    qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py
    qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py
    qpid/proton/branches/examples/tests/python/proton_tests/engine.py

Modified: qpid/proton/branches/examples/proton-c/bindings/python/cproton.i
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/cproton.i?rev=1630817&r1=1630816&r2=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-c/bindings/python/cproton.i (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/cproton.i Fri Oct 10 12:51:19 2014
@@ -375,5 +375,23 @@ bool pn_ssl_get_protocol_name(pn_ssl_t *
 int pn_ssl_get_peer_hostname(pn_ssl_t *ssl, char *OUTPUT, size_t *OUTPUT_SIZE);
 %ignore pn_ssl_get_peer_hostname;
 
+%inline %{
+  void *pn_py2void(PyObject *object) {
+    return object;
+  }
+
+  PyObject *pn_void2py(void *object) {
+    if (object) {
+      Py_INCREF(object);
+      return object;
+    } else {
+      Py_RETURN_NONE;
+    }
+  }
+
+  PyObject *pn_cast_pn_void(void *object) {
+    return pn_void2py(object);
+  }
+%}
 
 %include "proton/cproton.i"

Modified: qpid/proton/branches/examples/proton-c/bindings/python/proton.py
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/bindings/python/proton.py?rev=1630817&r1=1630816&r2=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-c/bindings/python/proton.py (original)
+++ qpid/proton/branches/examples/proton-c/bindings/python/proton.py Fri Oct 10 12:51:19 2014
@@ -3324,29 +3324,32 @@ class SSLSessionDetails(object):
     return self._session_id
 
 
+wrappers = {
+  "pn_void": lambda x: pn_void2py(x),
+  "pn_connection": lambda x: Connection._wrap_connection(pn_cast_pn_connection(x)),
+  "pn_session": lambda x: Session._wrap_session(pn_cast_pn_session(x)),
+  "pn_link": lambda x: Link._wrap_link(pn_cast_pn_link(x)),
+  "pn_delivery": lambda x: Delivery._wrap_delivery(pn_cast_pn_delivery(x)),
+  "pn_transport": lambda x: Transport(pn_cast_pn_transport(x))
+}
+
 class Collector:
 
   def __init__(self):
     self._impl = pn_collector()
     self._contexts = set()
 
+  def put(self, obj, etype):
+    pn_collector_put(self._impl, PN_VOID, pn_py2void(obj), etype)
+
   def peek(self):
     event = pn_collector_peek(self._impl)
     if event is None:
       return None
 
-    tpi = pn_event_transport(event)
-    if tpi:
-      tp = Transport(tpi)
-    else:
-      tp = None
-    return Event(type=pn_event_type(event),
-                 category=pn_event_category(event),
-                 connection=Connection._wrap_connection(pn_event_connection(event)),
-                 session=Session._wrap_session(pn_event_session(event)),
-                 link=Link._wrap_link(pn_event_link(event)),
-                 delivery=Delivery._wrap_delivery(pn_event_delivery(event)),
-                 transport=tp)
+    clazz = pn_class_name(pn_event_class(event))
+    context = wrappers[clazz](pn_event_context(event))
+    return Event(clazz, context, pn_event_type(event))
 
   def pop(self):
     ev = self.peek()
@@ -3390,34 +3393,19 @@ class Event:
   DELIVERY = PN_DELIVERY
   TRANSPORT = PN_TRANSPORT
 
-  def __init__(self, type, category,
-               connection, session, link, delivery, transport):
+  def __init__(self, clazz, context, type):
+    self.clazz = clazz
+    self.context = context
     self.type = type
-    self.category = category
-    self.connection = connection
-    self.session = session
-    self.link = link
-    self.delivery = delivery
-    self.transport = transport
 
   def _popped(self, collector):
-    if self.type == Event.LINK_FINAL:
-      ctx = self.link
-    elif self.type == Event.SESSION_FINAL:
-      ctx = self.session
-    elif self.type == Event.CONNECTION_FINAL:
-      ctx = self.connection
-    else:
-      return
-
-    collector._contexts.remove(ctx)
-    ctx._released()
+    if self.type in (Event.LINK_FINAL, Event.SESSION_FINAL,
+                     Event.CONNECTION_FINAL):
+      collector._contexts.remove(self.context)
+      self.context._released()
 
   def __repr__(self):
-    objects = [self.connection, self.session, self.link, self.delivery,
-               self.transport]
-    return "%s(%s)" % (pn_event_type_name(self.type),
-                       ", ".join([str(o) for o in objects if o is not None]))
+    return "%s(%s)" % (pn_event_type_name(self.type), self.context)
 
 ###
 # Driver

Modified: qpid/proton/branches/examples/proton-c/include/proton/cproton.i
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/cproton.i?rev=1630817&r1=1630816&r2=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-c/include/proton/cproton.i (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/cproton.i Fri Oct 10 12:51:19 2014
@@ -26,6 +26,7 @@ typedef unsigned long int uint32_t;
 typedef long int int32_t;
 typedef unsigned long long int uint64_t;
 typedef long long int int64_t;
+typedef unsigned long int uintptr_t;
 
 /* Parse these interface header files to generate APIs for script languages */
 
@@ -1385,3 +1386,11 @@ typedef long long int int64_t;
 %ignore pn_data_vscan;
 
 %include "proton/codec.h"
+
+%inline %{
+  pn_connection_t *pn_cast_pn_connection(void *x) { return (pn_connection_t *) x; }
+  pn_session_t *pn_cast_pn_session(void *x) { return (pn_session_t *) x; }
+  pn_link_t *pn_cast_pn_link(void *x) { return (pn_link_t *) x; }
+  pn_delivery_t *pn_cast_pn_delivery(void *x) { return (pn_delivery_t *) x; }
+  pn_transport_t *pn_cast_pn_transport(void *x) { return (pn_transport_t *) x; }
+%}

Modified: qpid/proton/branches/examples/proton-c/include/proton/event.h
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/event.h?rev=1630817&r1=1630816&r2=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-c/include/proton/event.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/event.h Fri Oct 10 12:51:19 2014
@@ -272,8 +272,9 @@ PN_EXTERN void pn_collector_free(pn_coll
  *         was elided
  */
 
-pn_event_t *pn_collector_put(pn_collector_t *collector, pn_event_type_t type,
-                             void *context);
+pn_event_t *pn_collector_put(pn_collector_t *collector,
+                             const pn_class_t *clazz, void *context,
+                             pn_event_type_t type);
 
 /**
  * Access the head event contained by a collector.
@@ -313,6 +314,14 @@ PN_EXTERN pn_event_type_t pn_event_type(
 PN_EXTERN pn_event_category_t pn_event_category(pn_event_t *event);
 
 /**
+ * Get the class associated with the event context.
+ *
+ * @param[in] event an event object
+ * @return the class associated with the event context
+ */
+PN_EXTERN const pn_class_t *pn_event_class(pn_event_t *event);
+
+/**
  * Get the context associated with an event.
  */
 PN_EXTERN void *pn_event_context(pn_event_t *event);

Modified: qpid/proton/branches/examples/proton-c/include/proton/object.h
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/include/proton/object.h?rev=1630817&r1=1630816&r2=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-c/include/proton/object.h (original)
+++ qpid/proton/branches/examples/proton-c/include/proton/object.h Fri Oct 10 12:51:19 2014
@@ -92,6 +92,7 @@ extern const pn_class_t *PN_WEAKREF;
     PREFIX ## _inspect                          \
 }
 
+PN_EXTERN const char *pn_class_name(const pn_class_t *clazz);
 PN_EXTERN void *pn_class_new(const pn_class_t *clazz, size_t size);
 PN_EXTERN void *pn_class_incref(const pn_class_t *clazz, void *object);
 PN_EXTERN int pn_class_refcount(const pn_class_t *clazz, void *object);

Modified: qpid/proton/branches/examples/proton-c/src/engine/engine.c
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/engine/engine.c?rev=1630817&r1=1630816&r2=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-c/src/engine/engine.c (original)
+++ qpid/proton/branches/examples/proton-c/src/engine/engine.c Fri Oct 10 12:51:19 2014
@@ -71,8 +71,8 @@ static void pn_endpoint_open(pn_endpoint
   // TODO: do we care about the current state?
   PN_SET_LOCAL(endpoint->state, PN_LOCAL_ACTIVE);
   pn_connection_t *conn = pn_ep_get_connection(endpoint);
-  pn_collector_put(conn->collector, endpoint_event(endpoint->type, true),
-                   endpoint);
+  pn_collector_put(conn->collector, PN_OBJECT, endpoint,
+                   endpoint_event(endpoint->type, true));
   pn_modified(conn, endpoint, true);
 }
 
@@ -81,8 +81,8 @@ static void pn_endpoint_close(pn_endpoin
   // TODO: do we care about the current state?
   PN_SET_LOCAL(endpoint->state, PN_LOCAL_CLOSED);
   pn_connection_t *conn = pn_ep_get_connection(endpoint);
-  pn_collector_put(conn->collector, endpoint_event(endpoint->type, false),
-                   endpoint);
+  pn_collector_put(conn->collector, PN_OBJECT, endpoint,
+                   endpoint_event(endpoint->type, false));
   pn_modified(conn, endpoint, true);
 }
 
@@ -336,7 +336,8 @@ static bool pni_post_final(pn_endpoint_t
   pn_connection_t *conn = pn_ep_get_connection(endpoint);
   if (!endpoint->posted_final) {
     endpoint->posted_final = true;
-    pn_event_t *event = pn_collector_put(conn->collector, type, endpoint);
+    pn_event_t *event = pn_collector_put(conn->collector, PN_OBJECT, endpoint,
+                                         type);
     if (event) { return true; }
   }
 
@@ -408,7 +409,7 @@ void pn_connection_collect(pn_connection
   pn_incref(connection->collector);
   pn_endpoint_t *endpoint = connection->endpoint_head;
   while (endpoint) {
-    pn_collector_put(connection->collector, endpoint_init_event_map[endpoint->type], endpoint);
+    pn_collector_put(connection->collector, PN_OBJECT, endpoint, endpoint_init_event_map[endpoint->type]);
     endpoint = endpoint->endpoint_next;
   }
 }
@@ -596,8 +597,8 @@ void pn_modified(pn_connection_t *connec
   }
 
   if (emit && connection->transport) {
-    pn_collector_put(connection->collector, PN_TRANSPORT,
-                     connection->transport);
+    pn_collector_put(connection->collector, PN_OBJECT, connection->transport,
+                     PN_TRANSPORT);
   }
 }
 
@@ -741,7 +742,7 @@ pn_session_t *pn_session(pn_connection_t
   ssn->state.remote_handles = pn_hash(PN_OBJECT, 0, 0.75);
   // end transport state
 
-  pn_collector_put(conn->collector, PN_SESSION_INIT, ssn);
+  pn_collector_put(conn->collector, PN_OBJECT, ssn, PN_SESSION_INIT);
   return ssn;
 }
 
@@ -868,7 +869,7 @@ pn_link_t *pn_link_new(int type, pn_sess
   link->state.link_credit = 0;
   // end transport state
 
-  pn_collector_put(session->connection->collector, PN_LINK_INIT, link);
+  pn_collector_put(session->connection->collector, PN_OBJECT, link, PN_LINK_INIT);
   return link;
 }
 

Modified: qpid/proton/branches/examples/proton-c/src/events/event.c
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/events/event.c?rev=1630817&r1=1630816&r2=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-c/src/events/event.c (original)
+++ qpid/proton/branches/examples/proton-c/src/events/event.c Fri Oct 10 12:51:19 2014
@@ -10,6 +10,7 @@ struct pn_collector_t {
 };
 
 struct pn_event_t {
+  const pn_class_t *clazz;
   void *context;    // depends on type
   pn_event_t *next;
   pn_event_type_t type;
@@ -96,7 +97,9 @@ void pn_collector_free(pn_collector_t *c
 pn_event_t *pn_event(void);
 static void pn_event_initialize(void *obj);
 
-pn_event_t *pn_collector_put(pn_collector_t *collector, pn_event_type_t type, void *context)
+pn_event_t *pn_collector_put(pn_collector_t *collector,
+                             const pn_class_t *clazz, void *context,
+                             pn_event_type_t type)
 {
   if (!collector) {
     return NULL;
@@ -113,6 +116,8 @@ pn_event_t *pn_collector_put(pn_collecto
     return NULL;
   }
 
+  clazz = clazz->reify(context);
+
   pn_event_t *event;
 
   if (collector->free_head) {
@@ -131,9 +136,10 @@ pn_event_t *pn_collector_put(pn_collecto
     collector->head = event;
   }
 
-  event->type = type;
+  event->clazz = clazz;
   event->context = context;
-  pn_class_incref(PN_OBJECT, event->context);
+  event->type = type;
+  pn_class_incref(clazz, event->context);
 
   //printf("event %s on %p\n", pn_event_type_name(event->type), event->context);
 
@@ -160,7 +166,7 @@ bool pn_collector_pop(pn_collector_t *co
 
   // decref before adding to the free list
   if (event->context) {
-    pn_class_decref(PN_OBJECT, event->context);
+    pn_class_decref(event->clazz, event->context);
     event->context = NULL;
   }
 
@@ -174,6 +180,7 @@ static void pn_event_initialize(void *ob
 {
   pn_event_t *event = (pn_event_t *) obj;
   event->type = PN_EVENT_NONE;
+  event->clazz = NULL;
   event->context = NULL;
   event->next = NULL;
 }
@@ -188,7 +195,7 @@ static int pn_event_inspect(void *obj, p
   if (event->context) {
     err = pn_string_addf(dst, ", ");
     if (err) return err;
-    err = pn_inspect(event->context, dst);
+    err = pn_class_inspect(event->clazz, event->context, dst);
     if (err) return err;
   }
 
@@ -215,6 +222,12 @@ pn_event_category_t pn_event_category(pn
   return (pn_event_category_t)(event->type & 0xFFFF0000);
 }
 
+const pn_class_t *pn_event_class(pn_event_t *event)
+{
+  assert(event);
+  return event->clazz;
+}
+
 void *pn_event_context(pn_event_t *event)
 {
   assert(event);

Modified: qpid/proton/branches/examples/proton-c/src/object/object.c
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/object/object.c?rev=1630817&r1=1630816&r2=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-c/src/object/object.c (original)
+++ qpid/proton/branches/examples/proton-c/src/object/object.c Fri Oct 10 12:51:19 2014
@@ -47,6 +47,11 @@ static int pn_void_inspect(void *object,
 const pn_class_t PNI_VOID = PN_METACLASS(pn_void);
 const pn_class_t *PN_VOID = &PNI_VOID;
 
+const char *pn_class_name(const pn_class_t *clazz)
+{
+  return clazz->name;
+}
+
 void *pn_class_new(const pn_class_t *clazz, size_t size)
 {
   assert(clazz);

Modified: qpid/proton/branches/examples/proton-c/src/transport/transport.c
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-c/src/transport/transport.c?rev=1630817&r1=1630816&r2=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-c/src/transport/transport.c (original)
+++ qpid/proton/branches/examples/proton-c/src/transport/transport.c Fri Oct 10 12:51:19 2014
@@ -270,7 +270,7 @@ int pn_transport_bind(pn_transport_t *tr
   pn_incref(connection);
   if (transport->open_rcvd) {
     PN_SET_REMOTE(connection->endpoint.state, PN_REMOTE_ACTIVE);
-    pn_collector_put(connection->collector, PN_CONNECTION_REMOTE_OPEN, connection);
+    pn_collector_put(connection->collector, PN_OBJECT, connection, PN_CONNECTION_REMOTE_OPEN);
     transport->disp->halt = false;
     transport_consume(transport);        // blech - testBindAfterOpen
   }
@@ -481,7 +481,7 @@ int pn_do_open(pn_dispatcher_t *disp)
 
   if (conn) {
     PN_SET_REMOTE(conn->endpoint.state, PN_REMOTE_ACTIVE);
-    pn_collector_put(conn->collector, PN_CONNECTION_REMOTE_OPEN, conn);
+    pn_collector_put(conn->collector, PN_OBJECT, conn, PN_CONNECTION_REMOTE_OPEN);
   } else {
     transport->disp->halt = true;
   }
@@ -510,7 +510,7 @@ int pn_do_begin(pn_dispatcher_t *disp)
   ssn->state.incoming_transfer_count = next;
   pni_map_remote_channel(ssn, disp->channel);
   PN_SET_REMOTE(ssn->endpoint.state, PN_REMOTE_ACTIVE);
-  pn_collector_put(transport->connection->collector, PN_SESSION_REMOTE_OPEN, ssn);
+  pn_collector_put(transport->connection->collector, PN_OBJECT, ssn, PN_SESSION_REMOTE_OPEN);
   return 0;
 }
 
@@ -684,7 +684,7 @@ int pn_do_attach(pn_dispatcher_t *disp)
     link->state.delivery_count = idc;
   }
 
-  pn_collector_put(transport->connection->collector, PN_LINK_REMOTE_OPEN, link);
+  pn_collector_put(transport->connection->collector, PN_OBJECT, link, PN_LINK_REMOTE_OPEN);
   return 0;
 }
 
@@ -765,7 +765,7 @@ int pn_do_transfer(pn_dispatcher_t *disp
     pn_post_flow(transport, ssn, link);
   }
 
-  pn_collector_put(transport->connection->collector, PN_DELIVERY, delivery);
+  pn_collector_put(transport->connection->collector, PN_OBJECT, delivery, PN_DELIVERY);
   return 0;
 }
 
@@ -815,7 +815,7 @@ int pn_do_flow(pn_dispatcher_t *disp)
       }
     }
 
-    pn_collector_put(transport->connection->collector, PN_LINK_FLOW, link);
+    pn_collector_put(transport->connection->collector, PN_OBJECT, link, PN_LINK_FLOW);
   }
 
   return 0;
@@ -910,7 +910,7 @@ int pn_do_disposition(pn_dispatcher_t *d
       delivery->updated = true;
       pn_work_update(transport->connection, delivery);
 
-      pn_collector_put(transport->connection->collector, PN_DELIVERY, delivery);
+      pn_collector_put(transport->connection->collector, PN_OBJECT, delivery, PN_DELIVERY);
     }
   }
 
@@ -940,7 +940,7 @@ int pn_do_detach(pn_dispatcher_t *disp)
   if (closed)
   {
     PN_SET_REMOTE(link->endpoint.state, PN_REMOTE_CLOSED);
-    pn_collector_put(transport->connection->collector, PN_LINK_REMOTE_CLOSE, link);
+    pn_collector_put(transport->connection->collector, PN_OBJECT, link, PN_LINK_REMOTE_CLOSE);
   } else {
     // TODO: implement
   }
@@ -956,7 +956,7 @@ int pn_do_end(pn_dispatcher_t *disp)
   int err = pn_scan_error(disp->args, &ssn->endpoint.remote_condition, SCAN_ERROR_DEFAULT);
   if (err) return err;
   PN_SET_REMOTE(ssn->endpoint.state, PN_REMOTE_CLOSED);
-  pn_collector_put(transport->connection->collector, PN_SESSION_REMOTE_CLOSE, ssn);
+  pn_collector_put(transport->connection->collector, PN_OBJECT, ssn, PN_SESSION_REMOTE_CLOSE);
   pni_unmap_remote_channel(ssn);
   return 0;
 }
@@ -969,7 +969,7 @@ int pn_do_close(pn_dispatcher_t *disp)
   if (err) return err;
   transport->close_rcvd = true;
   PN_SET_REMOTE(conn->endpoint.state, PN_REMOTE_CLOSED);
-  pn_collector_put(transport->connection->collector, PN_CONNECTION_REMOTE_CLOSE, conn);
+  pn_collector_put(transport->connection->collector, PN_OBJECT, conn, PN_CONNECTION_REMOTE_CLOSE);
   return 0;
 }
 
@@ -1447,7 +1447,7 @@ int pn_process_tpwork_sender(pn_transpor
         link->session->outgoing_deliveries--;
       }
 
-      pn_collector_put(transport->connection->collector, PN_LINK_FLOW, link);
+      pn_collector_put(transport->connection->collector, PN_OBJECT, link, PN_LINK_FLOW);
     }
   }
 

Modified: qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java?rev=1630817&r1=1630816&r2=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java (original)
+++ qpid/proton/branches/examples/proton-j/src/main/java/org/apache/qpid/proton/engine/Event.java Fri Oct 10 12:51:19 2014
@@ -81,6 +81,8 @@ public interface Event
 
     Type getType();
 
+    Object getContext();
+
     Connection getConnection();
 
     Session getSession();

Modified: qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py?rev=1630817&r1=1630816&r2=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py (original)
+++ qpid/proton/branches/examples/proton-j/src/main/resources/cengine.py Fri Oct 10 12:51:19 2014
@@ -1000,8 +1000,33 @@ def pn_event_delivery(event):
 def pn_event_transport(event):
   return wrap(event.getTransport(), pn_transport_wrapper)
 
+from org.apache.qpid.proton.engine.impl import ConnectionImpl, SessionImpl, \
+  SenderImpl, ReceiverImpl, DeliveryImpl, TransportImpl
+
+J2C = {
+  ConnectionImpl: "pn_connection",
+  SessionImpl: "pn_session",
+  SenderImpl: "pn_link",
+  ReceiverImpl: "pn_link",
+  DeliveryImpl: "pn_delivery",
+  TransportImpl: "pn_transport"
+}
+
+wrappers = {
+  "pn_connection": lambda x: wrap(x, pn_connection_wrapper),
+  "pn_session": lambda x: wrap(x, pn_session_wrapper),
+  "pn_link": lambda x: wrap(x, pn_link_wrapper),
+  "pn_delivery": lambda x: wrap(x, pn_delivery_wrapper),
+  "pn_transport": lambda x: wrap(x, pn_transport_wrapper),
+  "pn_void": lambda x: x
+}
+
 def pn_event_class(event):
-  return event.getClass()
+  ctx = event.getContext()
+  return J2C.get(ctx.getClass(), "pn_void")
+
+def pn_event_context(event):
+  return wrappers[pn_event_class(event)](event.getContext())
 
 def pn_event_type(event):
   return event.getType()

Copied: qpid/proton/branches/examples/proton-j/src/main/resources/cobject.py (from r1630816, qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py)
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/resources/cobject.py?p2=qpid/proton/branches/examples/proton-j/src/main/resources/cobject.py&p1=qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py&r1=1630816&r2=1630817&rev=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py (original)
+++ qpid/proton/branches/examples/proton-j/src/main/resources/cobject.py Fri Oct 10 12:51:19 2014
@@ -17,21 +17,23 @@
 # under the License.
 #
 
-"""
-The cproton module defines a java implementation of the C interface as
-exposed to python via swig. This allows tests defined in python to run
-against both the C and Java protocol implementations.
-"""
-
-# @todo(kgiusti) dynamically set these via filters in the pom.xml file
-PN_VERSION_MAJOR = 0
-PN_VERSION_MINOR = 0
-
-from cerror import *
-from ccodec import *
-from cengine import *
-from csasl import *
-from cssl import *
-from cdriver import *
-from cmessenger import *
-from cmessage import *
+def pn_class_name(cls):
+  return cls
+
+def pn_void2py(obj):
+  return obj
+
+def pn_cast_pn_connection(obj):
+    return obj
+
+def pn_cast_pn_session(obj):
+    return obj
+
+def pn_cast_pn_link(obj):
+    return obj
+
+def pn_cast_pn_delivery(obj):
+    return obj
+
+def pn_cast_pn_transport(obj):
+    return obj

Modified: qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py?rev=1630817&r1=1630816&r2=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py (original)
+++ qpid/proton/branches/examples/proton-j/src/main/resources/cproton.py Fri Oct 10 12:51:19 2014
@@ -27,6 +27,7 @@ against both the C and Java protocol imp
 PN_VERSION_MAJOR = 0
 PN_VERSION_MINOR = 0
 
+from cobject import *
 from cerror import *
 from ccodec import *
 from cengine import *

Modified: qpid/proton/branches/examples/tests/python/proton_tests/engine.py
URL: http://svn.apache.org/viewvc/qpid/proton/branches/examples/tests/python/proton_tests/engine.py?rev=1630817&r1=1630816&r2=1630817&view=diff
==============================================================================
--- qpid/proton/branches/examples/tests/python/proton_tests/engine.py (original)
+++ qpid/proton/branches/examples/tests/python/proton_tests/engine.py Fri Oct 10 12:51:19 2014
@@ -2233,7 +2233,7 @@ class EventTest(CollectorTest):
     rdlv.update(Delivery.ACCEPTED)
     self.pump()
     event = self.expect(Event.DELIVERY)
-    assert event.delivery == dlv
+    assert event.context == dlv
 
 class PeerTest(CollectorTest):
 



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