diff --git a/.gitignore b/.gitignore index e5f191c..55af06b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ /publisher /client -# Logs -/logs \ No newline at end of file +# Caches +/logs +/cdata \ No newline at end of file diff --git a/Makefile b/Makefile index a4f0315..a18b2fe 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ all: publisher client logger publisher: src/publisher.c src/utils.c $(CC) -lzmq $^ -o $@ -client: src/client.c +client: src/client.c src/utils.c $(CC) -lzmq $^ -o $@ logger: src/logger.c src/utils.c diff --git a/src/client.c b/src/client.c index cd01232..fc62359 100644 --- a/src/client.c +++ b/src/client.c @@ -10,14 +10,18 @@ int main (int argc, char *argv []) { - if(argc != 3){ - printf("Usage: %s
",argv[0]); + if(argc != 4){ + printf("Usage: %s
",argv[0]); exit(1); } //----- Arguments char *ip=argv[1]; int port=atoi(argv[2]); + char *cdatadir=argv[3]; + + //----- Various inits + mkdirp(cdatadir); //----- Init ZMQ void *context = zmq_ctx_new (); @@ -38,7 +42,36 @@ int main (int argc, char *argv []) while(1){ size=zmq_recv (subscriber, buffer, ZMQ_MSG_SIZE-1, 0); buffer[size < ZMQ_MSG_SIZE ? size : ZMQ_MSG_SIZE - 1] = '\0'; - printf("Received: %s\n",buffer); + //----- Read buffer + char *token = strtok(buffer, "\n"); + char key[255]; + char client[255]; + long int interval; + FILE *fptr; + int line=1; + while(token != NULL){ + if(line==2) + strcpy(key,token); + else if(line==3) + strcpy(client,token); + else if(line==4) + interval=atoi(token); + + if(line==4){ + char path[255]=""; + sprintf(path,"%s/%s_%s_%ld",cdatadir,key,client,interval); + fptr=fopen(path,"a"); + } + + if(line>4){ + fwrite(token, strlen(token), 1, fptr); + fwrite("\n",2,1,fptr); + } + + token=strtok(NULL, "\n"); + line++; + } + fclose(fptr); } diff --git a/src/publisher.c b/src/publisher.c index a42b41b..f4bb86d 100644 --- a/src/publisher.c +++ b/src/publisher.c @@ -79,7 +79,7 @@ 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\n",ZMQ_TOKEN,__key,interval); + sprintf(buffer,"%s\n%s\n%s\n%ld\n",ZMQ_TOKEN,__key,client,interval); int msglen=strlen(buffer); FILE *fptr; @@ -93,7 +93,7 @@ void publish(void *publisher, char *filepath, char* client, long int interval){ msglen+=read; } else { zmq_send (publisher, buffer, ZMQ_MSG_SIZE, 0); - sprintf(buffer,"%s\n%s\n%ld\n",ZMQ_TOKEN,__key,interval); + sprintf(buffer,"%s\n%s\n%s\n%ld\n",ZMQ_TOKEN,__key,client,interval); strcat(buffer,line); msglen=strlen(buffer); }