diff options
Diffstat (limited to 'src/publisher.c')
| -rw-r--r-- | src/publisher.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/publisher.c b/src/publisher.c index c9f702e..a42b41b 100644 --- a/src/publisher.c +++ b/src/publisher.c @@ -79,7 +79,25 @@ int main (int argc, char *argv []) void publish(void *publisher, char *filepath, char* client, long int interval){ printf("Publish!\n"); char buffer[ZMQ_MSG_SIZE]; - sprintf(buffer,"%s\n%s\n%ld",ZMQ_TOKEN,__key,interval); - // TODO: Send every lines of the file + sprintf(buffer,"%s\n%s\n%ld\n",ZMQ_TOKEN,__key,interval); + int msglen=strlen(buffer); + + FILE *fptr; + char * line = NULL; + size_t len = 0; + ssize_t read; + fptr=fopen(filepath,"r"); + while ((read = getline(&line, &len, fptr)) != -1) { + if((read+msglen) <ZMQ_MSG_SIZE){ + strcat(buffer,line); + msglen+=read; + } else { + zmq_send (publisher, buffer, ZMQ_MSG_SIZE, 0); + sprintf(buffer,"%s\n%s\n%ld\n",ZMQ_TOKEN,__key,interval); + strcat(buffer,line); + msglen=strlen(buffer); + } + } + fclose(fptr); zmq_send (publisher, buffer, ZMQ_MSG_SIZE, 0); }
\ No newline at end of file |
