summaryrefslogtreecommitdiff
path: root/ufo/ufo-zmq-messenger.c
diff options
context:
space:
mode:
authorTimo Dörr <timo@latecrew.de>2013-10-16 16:31:41 +0200
committerTimo Dörr <timo@latecrew.de>2013-10-23 14:09:22 +0200
commitc6ce5675b9af1b8d573afd9fb24ab74611f35644 (patch)
tree13cd414c49310e0f384974c816281190d7046a83 /ufo/ufo-zmq-messenger.c
parentb68d5a3e3927498f0947db56cb4002962362872e (diff)
Add MPI support
Diffstat (limited to 'ufo/ufo-zmq-messenger.c')
-rw-r--r--ufo/ufo-zmq-messenger.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/ufo/ufo-zmq-messenger.c b/ufo/ufo-zmq-messenger.c
index 83b167f..32ba32e 100644
--- a/ufo/ufo-zmq-messenger.c
+++ b/ufo/ufo-zmq-messenger.c
@@ -21,6 +21,7 @@
#include <zmq.h>
#include <string.h>
+#include "zmq-shim.h"
static void ufo_messenger_interface_init (UfoMessengerIface *iface);
@@ -155,6 +156,7 @@ ufo_zmq_messenger_send_blocking (UfoMessenger *msger,
frame->data_size = request_msg->data_size;
frame->type = request_msg->type;
+ //TODO eliminate extra copying
memcpy (frame->data, request_msg->data, request_msg->data_size);
gint err = zmq_msg_send (&request, priv->zmq_socket, 0);
@@ -180,8 +182,9 @@ ufo_zmq_messenger_send_blocking (UfoMessenger *msger,
zmq_msg_t reply;
zmq_msg_init (&reply);
- gint size = zmq_msg_recv (&reply, priv->zmq_socket, 0);
- if (size < 0) {
+ err = zmq_msg_recv (&reply, priv->zmq_socket, 0);
+ gint size = zmq_msg_size (&reply);
+ if (err < 0) {
g_set_error (error, ufo_messenger_error_quark (), zmq_errno(),
"Could not receive from %s: %s ", priv->remote_addr,
zmq_strerror (zmq_errno ()));
@@ -220,12 +223,13 @@ ufo_zmq_messenger_recv_blocking (UfoMessenger *msger,
g_mutex_lock (priv->mutex);
- UfoMessage *result;
+ UfoMessage *result = NULL;
zmq_msg_t reply;
zmq_msg_init (&reply);
- gint size = zmq_msg_recv (&reply, priv->zmq_socket, 0);
+ gint err = zmq_msg_recv (&reply, priv->zmq_socket, 0);
+ gint size = zmq_msg_size (&reply);
- if (size < 0) {
+ if (err < 0) {
zmq_msg_close (&reply);
g_set_error (error, ufo_messenger_error_quark(), zmq_errno(),
"Could not receive from %s: %s ", priv->remote_addr,