Lines Matching defs:base

76 settime(struct event_base* base)
78 if(gettimeofday(base->time_tv, NULL) < 0) {
82 *base->time_secs = (uint32_t)base->time_tv->tv_sec;
87 /** create event base */
90 struct event_base* base = (struct event_base*)malloc(
92 if(!base)
94 memset(base, 0, sizeof(*base));
95 base->time_secs = time_secs;
96 base->time_tv = time_tv;
97 if(settime(base) < 0) {
98 event_base_free(base);
101 base->times = rbtree_create(mini_ev_cmp);
102 if(!base->times) {
103 event_base_free(base);
106 base->capfd = MAX_FDS;
108 if((int)FD_SETSIZE < base->capfd)
109 base->capfd = (int)FD_SETSIZE;
111 base->fds = (struct event**)calloc((size_t)base->capfd,
113 if(!base->fds) {
114 event_base_free(base);
117 base->signals = (struct event**)calloc(MAX_SIG, sizeof(struct event*));
118 if(!base->signals) {
119 event_base_free(base);
123 FD_ZERO(&base->reads);
124 FD_ZERO(&base->writes);
126 return base;
142 static void handle_timeouts(struct event_base* base, struct timeval* now,
150 while((rbnode_t*)(p = (struct event*)rbtree_first(base->times))
170 (void)rbtree_delete(base->times, p);
178 static int handle_select(struct event_base* base, struct timeval* wait)
187 memmove(&r, &base->reads, sizeof(fd_set));
188 memmove(&w, &base->writes, sizeof(fd_set));
189 memmove(&base->ready, &base->content, sizeof(fd_set));
191 if((ret = select(base->maxfd+1, &r, &w, NULL, wait)) == -1) {
193 if(settime(base) < 0)
200 if(settime(base) < 0)
203 for(i=0; i<base->maxfd+1; i++) {
205 if(!base->fds[i] || !(FD_ISSET(i, &base->ready))) {
216 bits &= base->fds[i]->ev_events;
219 base->fds[i]->ev_callback));
220 (*base->fds[i]->ev_callback)(base->fds[i]->ev_fd,
221 bits, base->fds[i]->ev_arg);
230 int event_base_dispatch(struct event_base* base)
233 if(settime(base) < 0)
235 while(!base->need_to_exit)
238 handle_timeouts(base, base->time_tv, &wait);
239 if(base->need_to_exit)
242 if(handle_select(base, &wait) < 0) {
243 if(base->need_to_exit)
252 int event_base_loopexit(struct event_base* base,
255 base->need_to_exit = 1;
259 /* free event base, free events yourself */
260 void event_base_free(struct event_base* base)
262 if(!base)
264 if(base->times)
265 free(base->times);
266 if(base->fds)
267 free(base->fds);
268 if(base->signals)
269 free(base->signals);
270 free(base);
286 /* add event to a base */
287 int event_base_set(struct event_base* base, struct event* ev)
289 ev->ev_base = base;
348 /** which base gets to handle signals */