]> rtime.felk.cvut.cz Git - frescor/fwp.git/blobdiff - wme_test/wserver.c
Merge branch 'master' of molnam1@rtime.felk.cvut.cz:/var/git/frescor
[frescor/fwp.git] / wme_test / wserver.c
index 3c7b78fc55373d150547ce03283dc76fc0d367cc..f292085f004fcc5acfb2a3f75741d8dfe4a0b083 100644 (file)
 #include <pthread.h>
 #include "common.h"
 
-#define        BUFFSIZE        65536
+int ac_sockfd[AC_NUM];
 
-int ac_sockfd[AC_QUEUES];
+struct receiver {
+       unsigned received, last_received;
+} receivers[AC_NUM];
 
 
 void stopper()
 {
        int i;
 
-       for (i = 0 ; i < AC_QUEUES; i++) 
-               close(ac_sockfd[AC_QUEUES]);
+       for (i = 0 ; i < AC_NUM; i++) 
+               close(ac_sockfd[AC_NUM]);
 
        exit(0);
 }
@@ -60,7 +62,7 @@ int create_ac_socket(unsigned int ac)
                return -1;
        }
        
-       //tos = ((AC_QUEUES - ac) *2 - 1)*32;
+       //tos = ((AC_NUM - ac) *2 - 1)*32;
        tos = ac_to_tos[ac];
        if (setsockopt(sockfd, SOL_IP, IP_TOS, &tos, sizeof(tos))) {
                perror("Unable to set TOS");
@@ -73,7 +75,7 @@ int create_ac_socket(unsigned int ac)
 
 void* qhandler(void* queue)
 {
-       char    buff[BUFFSIZE];
+       union msg_buff buff;
        struct  sockaddr_in rem_addr;
        int     mlen;
        unsigned int ac, rem_addr_length; 
@@ -86,7 +88,7 @@ void* qhandler(void* queue)
        set_rt_prio(90-ac);
 
        while (1) {
-               while ((mlen = recvfrom(ac_sockfd[ac], buff, sizeof(buff) , 0, \
+               while ((mlen = recvfrom(ac_sockfd[ac], &buff, sizeof(buff) , 0, \
                        (struct sockaddr*)&rem_addr, &rem_addr_length)) < 0) {
                            if (errno == EINTR) continue;
                            perror("Chyba pri prijimani pozadavku");
@@ -96,8 +98,10 @@ void* qhandler(void* queue)
 #ifdef DEBUG
                printf("%d",ac);
                fflush(stdout);
-#endif 
-               while (sendto(ac_sockfd[ac], buff, mlen,0 ,(struct sockaddr*)&rem_addr, \
+#endif
+               receivers[ac].received++;
+/*             clock_gettime(CLOCK_MONOTONIC, &buff.msg.sendback_timestamp); */
+               while (sendto(ac_sockfd[ac], &buff, mlen,0 ,(struct sockaddr*)&rem_addr, \
                        sizeof(rem_addr)) < 0){
                            if (errno == EINTR) continue;
                            perror("Chyba pri zapisu");
@@ -109,7 +113,7 @@ void* qhandler(void* queue)
 
 int main(int argc, char *argv[])
 {
-       int i,rc;
+       int ac,rc;
        pthread_attr_t attr;
        pthread_t thread;
 
@@ -125,15 +129,23 @@ int main(int argc, char *argv[])
                exit(1);
        }
 
-       for (i = 0; i < AC_QUEUES; i++) {
-               ac_sockfd[i] = create_ac_socket(i);
-               rc = pthread_create(&thread, &attr, qhandler, (void*) i); 
+       for (ac = 0; ac < AC_NUM; ac++) {
+               ac_sockfd[ac] = create_ac_socket(ac);
+               rc = pthread_create(&thread, &attr, qhandler, (void*) ac); 
 
        }
        
        while (1) {
-               sleep(100000);
+               printf("\r");
+               for (ac = 0; ac < AC_NUM; ac++) {
+                       int delta = receivers[ac].received - receivers[ac].last_received;
+                       receivers[ac].last_received = receivers[ac].received;
+                       fprintf(stderr, "%s %5d %4d/s ", ac_to_text[ac], receivers[ac].received, delta);
+               }
+               fflush(stdout);
+               sleep(1);
        }
+       printf("\n");
 
        return 0;