//  Weather update server
//  Binds PUB socket to tcp://*:5556
//  Publishes random weather updates

#include <zmq.h>
#include <assert.h>
#include <time.h>
#include <dirent.h>

#include "utils.h"

// Global:
char *__logdir;
int __loginterval;

int main (int argc, char *argv [])
{
    if(argc != 3){
        printf("Usage: %s <abslogdir> <loginterval>",argv[0]);
        exit(1);
    }

    //----- Init global variables
    __logdir=argv[1];
    __loginterval=atoi(argv[2]);


    //----- Start publisher
    DIR *dr = opendir(__logdir);
    struct dirent *de;  // Pointer for directory entry
    for(int i=0;i<=0;i++){
        int interval=INTERVAL(__loginterval);
        int interval_next=INTERVAL_NEXT(__loginterval);
        while ((de = readdir(dr)) != NULL){
            if(strcmp(de->d_name,".") && strcmp(de->d_name,"..")){
                char *client=de->d_name;
                char logfile[255];
                char logfile_next[255];
                sprintf(logfile,"%s/%s/%ld",__logdir,client,interval);
                sprintf(logfile_next,"%s/%s/%ld",__logdir,client,interval_next);
                // As long as next logfile is not available, we should wait
                // for sending the current one
                printf("Waiting for %s...%s\n",client,logfile_next);
                while(!FILE_EXISTS(logfile_next)){
                    sleep(1);
                }
                // Send current one
                if(FILE_EXISTS(logfile)){
                    printf("Sending....\n");
                }
            }
        }
    }
    closedir(dr);
    


    return 0;
    //  Prepare our context and publisher
    void *context = zmq_ctx_new ();
    void *publisher = zmq_socket (context, ZMQ_PUB);
    int rc = zmq_bind (publisher, "tcp://*:"STRINGIFY(PUBLISHER_PORT));
    assert (rc == 0);

    //  Initialize random number generator
    while (1) {
        zmq_send (publisher, "Hello World", 5, 0);
        printf("AA\n");
    }
    zmq_close (publisher);
    zmq_ctx_destroy (context);
    return 0;
}