Lines Matching refs:reactor

56   reactor_t* reactor;  // the reactor instance this object is registered with.  member
65 static reactor_status_t run_reactor(reactor_t* reactor, int iterations);
112 void reactor_free(reactor_t* reactor) { in reactor_free() argument
113 if (!reactor) return; in reactor_free()
115 list_free(reactor->invalidation_list); in reactor_free()
116 close(reactor->event_fd); in reactor_free()
117 close(reactor->epoll_fd); in reactor_free()
118 delete reactor->list_mutex; in reactor_free()
119 osi_free(reactor); in reactor_free()
122 reactor_status_t reactor_start(reactor_t* reactor) { in reactor_start() argument
123 log::assert_that(reactor != NULL, "assert failed: reactor != NULL"); in reactor_start()
124 return run_reactor(reactor, 0); in reactor_start()
127 reactor_status_t reactor_run_once(reactor_t* reactor) { in reactor_run_once() argument
128 log::assert_that(reactor != NULL, "assert failed: reactor != NULL"); in reactor_run_once()
129 return run_reactor(reactor, 1); in reactor_run_once()
132 void reactor_stop(reactor_t* reactor) { in reactor_stop() argument
133 log::assert_that(reactor != NULL, "assert failed: reactor != NULL"); in reactor_stop()
135 eventfd_write(reactor->event_fd, EVENT_REACTOR_STOP); in reactor_stop()
138 reactor_object_t* reactor_register(reactor_t* reactor, int fd, void* context, in reactor_register() argument
141 log::assert_that(reactor != NULL, "assert failed: reactor != NULL"); in reactor_register()
147 object->reactor = reactor; in reactor_register()
160 if (epoll_ctl(reactor->epoll_fd, EPOLL_CTL_ADD, fd, &event) == -1) { in reactor_register()
182 if (epoll_ctl(object->reactor->epoll_fd, EPOLL_CTL_MOD, object->fd, &event) == in reactor_change_registration()
199 reactor_t* reactor = obj->reactor; in reactor_unregister() local
201 if (epoll_ctl(reactor->epoll_fd, EPOLL_CTL_DEL, obj->fd, NULL) == -1) in reactor_unregister()
205 if (reactor->is_running && in reactor_unregister()
206 pthread_equal(pthread_self(), reactor->run_thread)) { in reactor_unregister()
207 reactor->object_removed = true; in reactor_unregister()
212 std::unique_lock<std::mutex> lock(*reactor->list_mutex); in reactor_unregister()
213 list_append(reactor->invalidation_list, obj); in reactor_unregister()
233 static reactor_status_t run_reactor(reactor_t* reactor, int iterations) { in run_reactor() argument
234 log::assert_that(reactor != NULL, "assert failed: reactor != NULL"); in run_reactor()
236 reactor->run_thread = pthread_self(); in run_reactor()
237 reactor->is_running = true; in run_reactor()
242 std::lock_guard<std::mutex> lock(*reactor->list_mutex); in run_reactor()
243 list_clear(reactor->invalidation_list); in run_reactor()
247 OSI_NO_INTR(ret = epoll_wait(reactor->epoll_fd, events, MAX_EVENTS, -1)); in run_reactor()
250 reactor->is_running = false; in run_reactor()
260 eventfd_read(reactor->event_fd, &value); in run_reactor()
261 reactor->is_running = false; in run_reactor()
267 std::unique_lock<std::mutex> lock(*reactor->list_mutex); in run_reactor()
268 if (list_contains(reactor->invalidation_list, object)) { in run_reactor()
277 reactor->object_removed = false; in run_reactor()
281 if (!reactor->object_removed && events[j].events & EPOLLOUT && in run_reactor()
286 if (reactor->object_removed) { in run_reactor()
293 reactor->is_running = false; in run_reactor()