Mercurial > hg > fxanalyse
view data-provider.c @ 258:5296f3bcd160
Implement DDS clients reconnect
On network send() failures try to reconnect to the server before
returning an error. This allows to restart the network servers
controlling the DDSes wiothout having to restart the clients.
author | Daniele Nicolodi <daniele.nicolodi@obspm.fr> |
---|---|
date | Tue, 16 Jun 2015 14:31:35 +0200 |
parents | ec81395bf08d |
children |
line wrap: on
line source
#include <ansi_c.h> #include <userint.h> #include "logging.h" /* message buffer */ #define DATA_PROVIDER_MSGLEN 256 #define DATA_PROVIDER_MSGNUM 16 static char messages[DATA_PROVIDER_MSGLEN][DATA_PROVIDER_MSGNUM]; static unsigned int messageid = 0; /* message callback */ static void CVICALLBACK send_message_callback(void *msg) { if (msg != NULL) logmessage(INFO, msg); } void send_message(int thread, const char *frmt, ...) { /* message buffer */ char *message = messages[messageid++ % DATA_PROVIDER_MSGNUM]; /* format message */ va_list args; va_start(args, frmt); vsnprintf(message, DATA_PROVIDER_MSGLEN - 1, frmt, args); va_end(args); /* signal main thread */ PostDeferredCallToThread(send_message_callback, message, thread); }