aboutsummaryrefslogtreecommitdiffstats
path: root/zmqoutput.c
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2015-06-05 12:37:39 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2015-06-05 12:37:39 +0200
commit1e2a3730e9833f4bac850f89e552f023b7eec3f1 (patch)
tree719fb8330640072a31762af6b7a0391c08fd0af2 /zmqoutput.c
parent86659b51355c4eade8124a90afc5995f2765fc41 (diff)
downloadtoolame-dab-1e2a3730e9833f4bac850f89e552f023b7eec3f1.tar.gz
toolame-dab-1e2a3730e9833f4bac850f89e552f023b7eec3f1.tar.bz2
toolame-dab-1e2a3730e9833f4bac850f89e552f023b7eec3f1.zip
accept a list of ZMQ endpoints, separated by semicolons
Diffstat (limited to 'zmqoutput.c')
-rw-r--r--zmqoutput.c28
1 files changed, 23 insertions, 5 deletions
diff --git a/zmqoutput.c b/zmqoutput.c
index 1345bfd..03007cc 100644
--- a/zmqoutput.c
+++ b/zmqoutput.c
@@ -22,7 +22,7 @@ void zmqoutput_set_peaks(int left, int right)
zmq_peak_right = right;
}
-int zmqoutput_open(Bit_stream_struc *bs, char* uri)
+int zmqoutput_open(Bit_stream_struc *bs, const char* uri_list)
{
zmq_context = zmq_ctx_new();
bs->zmq_sock = zmq_socket(zmq_context, ZMQ_PUB);
@@ -31,12 +31,30 @@ int zmqoutput_open(Bit_stream_struc *bs, char* uri)
zmq_strerror(errno));
return -1;
}
- if (zmq_connect(bs->zmq_sock, uri) != 0) {
- fprintf(stderr, "Error occurred during zmq_connect: %s\n",
- zmq_strerror(errno));
- return -1;
+
+ char* uris = strdup(uri_list);
+ char* saveptr = NULL;
+
+ for (; ; uris = NULL) {
+ char* uri = strtok_r(uris, ";", &saveptr);
+
+
+ if (uri) {
+ fprintf(stderr, "Connecting ZMQ to %s\n", uri);
+ if (zmq_connect(bs->zmq_sock, uri) != 0) {
+ fprintf(stderr, "Error occurred during zmq_connect: %s\n",
+ zmq_strerror(errno));
+ free(uris);
+ return -1;
+ }
+ }
+ else {
+ break;
+ }
}
+ free(uris);
+
zmqbuf = (unsigned char*)malloc(bs->zmq_framesize);
if (zmqbuf == NULL) {
fprintf(stderr, "Unable to allocate ZMQ buffer\n");