summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/components/queue/queue-sender.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sca-cpp/trunk/components/queue/queue-sender.cpp')
-rw-r--r--sca-cpp/trunk/components/queue/queue-sender.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/sca-cpp/trunk/components/queue/queue-sender.cpp b/sca-cpp/trunk/components/queue/queue-sender.cpp
index 15128411c2..07f8491f54 100644
--- a/sca-cpp/trunk/components/queue/queue-sender.cpp
+++ b/sca-cpp/trunk/components/queue/queue-sender.cpp
@@ -39,19 +39,22 @@
namespace tuscany {
namespace queue {
-QpidConnection qc;
-
/**
* Post an item to a queue.
*/
const failable<value> post(const list<value>& params) {
+ QpidConnection qc;
QpidSession qs(qc);
// Post the item
- const value key = ((lambda<value(list<value>)>)cadr(params))(list<value>());
- post(key, car(params), qs);
-
- return value(true);
+ const value pk = ((lambda<value(list<value>)>)caddr(params))(list<value>());
+ const value key = isList(pk)? append<value>(pk, (list<value>)car(params)) : cons<value>(pk, (list<value>)car(params));
+ debug(key, "queue::post::key");
+ debug(cadr(params), "queue::post::value");
+ const failable<bool> r = post(key, cadr(params), qs);
+ if (!hasContent(r))
+ return mkfailure<value>(reason(r));
+ return key;
}
}