44 lines
1.0 KiB
C
44 lines
1.0 KiB
C
#include <stdlib.h>
|
|
#include <assert.h>
|
|
#include <signal.h>
|
|
#include <zmq.h>
|
|
|
|
double measuredTemperature = 0.0;
|
|
|
|
|
|
int running = 1;
|
|
static void stopHandler(int sign) {
|
|
printf("received ctrl-c\n");
|
|
running = 0;
|
|
}
|
|
|
|
|
|
|
|
int main(int argc, char** argv) {
|
|
signal(SIGINT, stopHandler); /* catches ctrl-c */
|
|
|
|
/* prepare zmq context, connect to server and subscribe with empty filter */
|
|
void *zmqContext = zmq_ctx_new();
|
|
void *zmqSubscriber = zmq_socket(zmqContext, ZMQ_SUB);
|
|
int rc = zmq_connect(zmqSubscriber, "tcp://127.0.0.1:12345");
|
|
assert(rc == 0);
|
|
rc = zmq_setsockopt(zmqSubscriber, ZMQ_SUBSCRIBE, 0, 0);
|
|
assert(rc == 0);
|
|
|
|
while (running) {
|
|
double oldMeasuredTemperature = measuredTemperature;
|
|
|
|
rc = zmq_recv(zmqSubscriber, &measuredTemperature,
|
|
sizeof(double), 0);
|
|
assert(rc != -1);
|
|
|
|
if (oldMeasuredTemperature != measuredTemperature) {
|
|
printf("temperature value changed: %f\n", measuredTemperature);
|
|
}
|
|
}
|
|
|
|
printf("Terminating ...\n");
|
|
zmq_close(zmqSubscriber);
|
|
zmq_ctx_destroy(zmqContext);
|
|
}
|