You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2013/07/09 04:22:34 UTC

svn commit: r1501046 - in /qpid/trunk/qpid/extras/dispatch: include/qpid/dispatch/router.h src/python_embedded.c src/router_node.c

Author: tross
Date: Tue Jul  9 02:22:33 2013
New Revision: 1501046

URL: http://svn.apache.org/r1501046
Log:
QPID-4967 - Added the message transmit linkage from python.

Modified:
    qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/router.h
    qpid/trunk/qpid/extras/dispatch/src/python_embedded.c
    qpid/trunk/qpid/extras/dispatch/src/router_node.c

Modified: qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/router.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/router.h?rev=1501046&r1=1501045&r2=1501046&view=diff
==============================================================================
--- qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/router.h (original)
+++ qpid/trunk/qpid/extras/dispatch/include/qpid/dispatch/router.h Tue Jul  9 02:22:33 2013
@@ -43,5 +43,9 @@ void dx_router_send(dx_dispatch_t       
                     dx_field_iterator_t *address,
                     dx_message_t        *msg);
 
+void dx_router_send2(dx_dispatch_t *dx,
+                     const char    *address,
+                     dx_message_t  *msg);
+
 
 #endif

Modified: qpid/trunk/qpid/extras/dispatch/src/python_embedded.c
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/extras/dispatch/src/python_embedded.c?rev=1501046&r1=1501045&r2=1501046&view=diff
==============================================================================
--- qpid/trunk/qpid/extras/dispatch/src/python_embedded.c (original)
+++ qpid/trunk/qpid/extras/dispatch/src/python_embedded.c Tue Jul  9 02:22:33 2013
@@ -432,14 +432,36 @@ static void IoAdapter_dealloc(IoAdapter*
 
 static PyObject* dx_python_send(PyObject *self, PyObject *args)
 {
+    IoAdapter  *ioa = (IoAdapter*) self;
     const char *address;
     PyObject   *app_properties;
     PyObject   *body;
     if (!PyArg_ParseTuple(args, "sOO", &address, &app_properties, &body))
         return 0;
 
-    // TODO - Compose and send a message
-
+    dx_composed_field_t *field = dx_compose(DX_PERFORMATIVE_HEADER, 0);
+    dx_compose_start_list(field);
+    dx_compose_insert_bool(field, 0);     // durable
+    dx_compose_end_list(field);
+
+    field = dx_compose(DX_PERFORMATIVE_PROPERTIES, field);
+    dx_compose_start_list(field);
+    dx_compose_insert_null(field);            // message-id
+    dx_compose_insert_null(field);            // user-id
+    dx_compose_insert_string(field, address); // to
+    dx_compose_end_list(field);
+
+    field = dx_compose(DX_PERFORMATIVE_APPLICATION_PROPERTIES, field);
+    dx_py_to_composed(app_properties, field);
+
+    field = dx_compose(DX_PERFORMATIVE_BODY_AMQP_VALUE, field);
+    dx_py_to_composed(body, field);
+
+    dx_message_t *msg = dx_allocate_message();
+    dx_message_compose_2(msg, field);
+    dx_router_send2(ioa->dx, address, msg);
+    dx_free_message(msg);
+    dx_compose_free(field);
 
     Py_INCREF(Py_None);
     return Py_None;

Modified: qpid/trunk/qpid/extras/dispatch/src/router_node.c
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/extras/dispatch/src/router_node.c?rev=1501046&r1=1501045&r2=1501046&view=diff
==============================================================================
--- qpid/trunk/qpid/extras/dispatch/src/router_node.c (original)
+++ qpid/trunk/qpid/extras/dispatch/src/router_node.c Tue Jul  9 02:22:33 2013
@@ -613,6 +613,16 @@ void dx_router_send(dx_dispatch_t       
 }
 
 
+void dx_router_send2(dx_dispatch_t *dx,
+                     const char    *address,
+                     dx_message_t  *msg)
+{
+    dx_field_iterator_t *iter = dx_field_iterator_string(address, ITER_VIEW_ADDRESS_HASH);
+    dx_router_send(dx, iter, msg);
+    dx_field_iterator_free(iter);
+}
+
+
 //===============================================================================
 // Python Router Adapter
 //===============================================================================



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