Use fd as a key to handle eventloop 59/287559/1 accepted/tizen/unified/20230206.093814 accepted/tizen/unified/20230206.093930
authorSeonah Moon <seonah1.moon@samsung.com>
Tue, 31 Jan 2023 14:32:37 +0000 (23:32 +0900)
committerSeonah Moon <seonah1.moon@samsung.com>
Tue, 31 Jan 2023 14:33:40 +0000 (23:33 +0900)
Change-Id: Id5fba9ecb647498f8e97bbf0975e7ca79ab551ea

src/vine-event-loop-epoll.cpp

index 91705175ed8343e88221ee7c4816c9fd26b3033e..62b80f7b94f27499f21001c74f53de12d9d231f3 100755 (executable)
@@ -81,13 +81,10 @@ static void *__vine_event_loop_epoll_run(void *arg)
                }
 
                for (int i = 0; i < n; ++i) {
-                       vine_epoll_io_event_handler *h = (vine_epoll_io_event_handler *)events[i].data.ptr;
-
-                       if (!h)
-                               continue;
-
-                       if (_find_io_event_handler(h->fd) == NULL) {
-                               VINE_LOGI("Removed fd[%d]", h->fd);
+                       int fd = events[i].data.fd;
+                       vine_epoll_io_event_handler *h = _find_io_event_handler(fd);
+                       if (!h) {
+                               VINE_LOGD("Removed fd[%d] %d", fd);
                                continue;
                        }
 
@@ -244,7 +241,7 @@ int vine_event_loop_epoll_add_io_handler(
 
        struct epoll_event event;
        event.events = events;
-       event.data.ptr = (void *)h;
+       event.data.fd = fd;
 
        epoll_ctl(__vine_epoll_fd, EPOLL_CTL_ADD, fd, &event);
        VINE_LOGD("Add an epoll event. fd: %d", fd);
@@ -257,10 +254,12 @@ int vine_event_loop_epoll_mod_io_handler(
 {
        RET_VAL_IF(fd < 0, VINE_ERROR_INVALID_PARAMETER,
                "fd should be equal to or greater than zero");
+       RET_VAL_IF(_find_io_event_handler(fd) == NULL,
+                       VINE_ERROR_INVALID_PARAMETER, "fd is removed.");
 
        struct epoll_event event;
        event.events = events;
-       event.data.ptr = _find_io_event_handler(fd);
+       event.data.fd = fd;
 
        epoll_ctl(__vine_epoll_fd, EPOLL_CTL_MOD, fd, &event);
        VINE_LOGD("Modify an epoll event. fd: %d event: %d", fd, events);