#include "event.h"
-int event_init(t_event *event) {
+int event_init(t_event *event,int outfd) {
- write(2,"[event] initializing event system ...",37);
+ dprintf(outfd,"[event] initializing event system ...\n");
event->maxfd=0;
+ event->outfd=outfd;
+
FD_ZERO(&(event->rfds));
FD_ZERO(&(event->rfds_o));
FD_ZERO(&(event->wfds));
return E_SUCCESS;
}
+int event_set_timeout(t_event *event,int sec,int usec) {
+
+ event->timeout.tv_sec=sec;
+ event->timeout.tv_usec=usec;
+
+ return E_SUCCESS;
+}
+
int event_math(int fd,t_event *event,char rw,char ar) {
if(ar==ADD) {
if(fd==event->maxfd) event->maxfd-=1;
}
- printf("[event] %c fd %d to %c file descriptor set\n",ar==ADD?'+':'-',fd,
- rw==READ?'r':'w');
+ dprintf(event->outfd,"[event] %c fd %d to %c file descriptor set\n",
+ ar==ADD?'+':'-',fd,rw==READ?'r':'w');
return E_SUCCESS;
}
int s_ret;
struct timeval tv;
+ struct timeval *tv_ptr;
/* switch on event system */
event->status=ENABLED;
event->wfds=event->wfds_o;
tv=event->timeout;
+ if((tv.tv_sec==0)&&(tv.tv_usec==0)) tv_ptr=NULL;
+ else tv_ptr=&tv;
+
if((s_ret=select(event->maxfd+1,&(event->rfds),&(event->wfds),NULL,
- &tv))==-1) {
+ tv_ptr))==-1) {
perror("[event] select call");
return E_ERROR;
}
if(s_ret) {
/* 1+ fd(s) available for reading/writing */
if(callback0(event,ptr)==CALLBACK_ERROR) {
- write(2,"[event] callback0 returned error",32);
+ dprintf(event->outfd,"[event] callback0 returned error\n");
return E_ERROR;
}
}
/* usual stuff to be executed */
if(callback1(event,ptr)==CALLBACK_ERROR) {
- write(2,"[event] callback returned error",31);
+ dprintf(event->outfd,"[event] callback returned error\n");
return E_ERROR;
}
int event_stop(t_event *event) {
- write(2,"[event] shutdown",16);
+ dprintf(event->outfd,"[event] shutdown\n");
event->status=DISABLED;
return E_SUCCESS;