summaryrefslogtreecommitdiff
path: root/qpid/extras/dispatch/src/python_embedded.c
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2013-07-09 02:22:33 +0000
committerTed Ross <tross@apache.org>2013-07-09 02:22:33 +0000
commit99f53c071df83af0b3276df762f829c5db0b39e8 (patch)
treee6c808673eb82a22f581a6955d933acf42792c4f /qpid/extras/dispatch/src/python_embedded.c
parent344fd5a1565f4088b9099bd74c95b836b0bbffab (diff)
downloadqpid-python-99f53c071df83af0b3276df762f829c5db0b39e8.tar.gz
QPID-4967 - Added the message transmit linkage from python.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1501046 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/extras/dispatch/src/python_embedded.c')
-rw-r--r--qpid/extras/dispatch/src/python_embedded.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/qpid/extras/dispatch/src/python_embedded.c b/qpid/extras/dispatch/src/python_embedded.c
index d223c047e6..6b5250a34a 100644
--- a/qpid/extras/dispatch/src/python_embedded.c
+++ b/qpid/extras/dispatch/src/python_embedded.c
@@ -432,14 +432,36 @@ static void IoAdapter_dealloc(IoAdapter* self)
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;