Lines Matching full:base
85 settime(struct event_base* base) in settime() argument
87 if(gettimeofday(base->time_tv, NULL) < 0) { in settime()
91 *base->time_secs = (time_t)base->time_tv->tv_sec; in settime()
96 /** create event base */
100 struct event_base* base = (struct event_base*)malloc( in event_init() local
102 if(!base) in event_init()
104 memset(base, 0, sizeof(*base)); in event_init()
105 base->region = region_create(xalloc, free); in event_init()
106 if(!base->region) { in event_init()
107 free(base); in event_init()
110 base->time_secs = time_secs; in event_init()
111 base->time_tv = time_tv; in event_init()
112 if(settime(base) < 0) { in event_init()
113 event_base_free(base); in event_init()
116 base->times = rbtree_create(base->region, mini_ev_cmp); in event_init()
117 if(!base->times) { in event_init()
118 event_base_free(base); in event_init()
121 base->capfd = MAX_FDS; in event_init()
123 if((int)FD_SETSIZE < base->capfd) in event_init()
124 base->capfd = (int)FD_SETSIZE; in event_init()
126 base->fds = (struct event**)calloc((size_t)base->capfd, in event_init()
128 if(!base->fds) { in event_init()
129 event_base_free(base); in event_init()
132 base->signals = (struct event**)calloc(MAX_SIG, sizeof(struct event*)); in event_init()
133 if(!base->signals) { in event_init()
134 event_base_free(base); in event_init()
138 FD_ZERO(&base->reads); in event_init()
139 FD_ZERO(&base->writes); in event_init()
141 return base; in event_init()
160 handle_timeouts(struct event_base* base, struct timeval* now, in handle_timeouts() argument
169 while((rbnode_type*)(p = (struct event*)rbtree_first(base->times)) in handle_timeouts()
190 (void)rbtree_delete(base->times, p); in handle_timeouts()
199 handle_select(struct event_base* base, struct timeval* wait) in handle_select() argument
208 memmove(&r, &base->reads, sizeof(fd_set)); in handle_select()
209 memmove(&w, &base->writes, sizeof(fd_set)); in handle_select()
210 memmove(&base->ready, &base->content, sizeof(fd_set)); in handle_select()
212 if((ret = select(base->maxfd+1, &r, &w, NULL, wait)) == -1) { in handle_select()
214 if(settime(base) < 0) in handle_select()
221 if(settime(base) < 0) in handle_select()
224 for(i=0; i<base->maxfd+1; i++) { in handle_select()
226 if(!base->fds[i] || !(FD_ISSET(i, &base->ready))) { in handle_select()
237 bits &= base->fds[i]->ev_flags; in handle_select()
239 (*base->fds[i]->ev_callback)(base->fds[i]->ev_fd, in handle_select()
240 bits, base->fds[i]->ev_arg); in handle_select()
250 event_base_loop(struct event_base* base, int flags) in event_base_loop() argument
254 return event_base_dispatch(base); in event_base_loop()
256 if(handle_timeouts(base, base->time_tv, &wait)) in event_base_loop()
258 if(base->need_to_exit) in event_base_loop()
261 if(handle_select(base, &wait) < 0) { in event_base_loop()
262 if(base->need_to_exit) in event_base_loop()
271 event_base_dispatch(struct event_base* base) in event_base_dispatch() argument
274 if(settime(base) < 0) in event_base_dispatch()
276 while(!base->need_to_exit) in event_base_dispatch()
279 (void)handle_timeouts(base, base->time_tv, &wait); in event_base_dispatch()
280 if(base->need_to_exit) in event_base_dispatch()
283 if(handle_select(base, &wait) < 0) { in event_base_dispatch()
284 if(base->need_to_exit) in event_base_dispatch()
294 event_base_loopexit(struct event_base* base, in event_base_loopexit() argument
297 base->need_to_exit = 1; in event_base_loopexit()
301 int event_base_loopbreak(struct event_base * base) in event_base_loopbreak() argument
303 return event_base_loopexit(base, NULL); in event_base_loopbreak()
306 /* free event base, free events yourself */
308 event_base_free(struct event_base* base) in event_base_free() argument
310 if(!base) in event_base_free()
312 /* base->times is allocated in region and is freed with the region */ in event_base_free()
313 if(base->fds) in event_base_free()
314 free(base->fds); in event_base_free()
315 if(base->signals) in event_base_free()
316 free(base->signals); in event_base_free()
317 region_destroy(base->region); in event_base_free()
318 free(base); in event_base_free()
334 /* add event to a base */
336 event_base_set(struct event_base* base, struct event* ev) in event_base_set() argument
338 ev->ev_base = base; in event_base_set()
399 /** which base gets to handle signals */