ecs: fix select procedure
authormunkyu.im <munkyu.im@samsung.com>
Tue, 13 Aug 2013 08:08:56 +0000 (17:08 +0900)
committermunkyu.im <munkyu.im@samsung.com>
Tue, 13 Aug 2013 08:08:56 +0000 (17:08 +0900)
Signed-off-by: munkyu.im <munkyu.im@samsung.com>
tizen/src/ecs.c
tizen/src/ecs.h

index 62d4379fabc47c006ddfa16e89943bb3f41950a8..5f8cc0630f2d2fb28227f7ba4592851a9b45c0ed 100644 (file)
@@ -114,7 +114,7 @@ static void ecs_client_close(ECS_Client* clii) {
        if (0 <= clii->client_fd) {
                LOG("ecs client closed with fd: %d", clii->client_fd);
                closesocket(clii->client_fd);
-#ifdef _WIN32
+#ifndef CONFIG_LINUX
                FD_CLR(clii->client_fd, &clii->cs->reads);
 #endif
                clii->client_fd = -1;
@@ -1304,29 +1304,29 @@ static int ecs_loop(ECS_State *cs)
        return 0;
 }
 #elif defined(CONFIG_DARWIN)
-#define FD_MAX_SIZE 1024
 static int ecs_loop(ECS_State *cs)
 {
        int index = 0;
+    int res = 0;
        struct timeval timeout;
        fd_set temps = cs->reads;
 
        timeout.tv_sec = 5;
        timeout.tv_usec = 0;
 
-       if (select(0, &temps, 0, 0, &timeout) < 0) {
-               LOG("select error.");
+       if ((res = select(MAX_FD_NUM + 1, &temps, NULL, NULL, &timeout)) < 0) {
+               LOG("select failed..");
                return -1;
-       }
+    }
 
-       for (index = 0; index < FD_MAX_SIZE; index++) {
-               if (FD_ISSET(cs->reads.fds_bits[index], &temps)) {
-                       if (cs->reads.fds_bits[index] == cs->listen_fd) {
+       for (index = 0; index < MAX_FD_NUM; index ++) {
+               if (FD_ISSET(index, &temps)) {
+                       if (index == cs->listen_fd) {
                                ecs_accept(cs);
                                continue;
                        }
 
-                       ecs_read(ecs_find_client(cs->reads.fds_bits[index]));
+                       ecs_read(ecs_find_client(index));
                }
        }
 
index 6ee9fefdca70cb726d30493bccad448a69682292..4a02289565d1093619bcd287033197ced128da80 100644 (file)
@@ -99,13 +99,14 @@ struct Monitor {
 };
 
 #define MAX_EVENTS     1000
+#define MAX_FD_NUM     300
 typedef struct ECS_State {
        int listen_fd;
 #ifdef CONFIG_LINUX
        int epoll_fd;
        struct epoll_event events[MAX_EVENTS];
 #else
-       fd_set reads;
+    fd_set reads;
 #endif
        int is_unix;
        int ecs_running;