added evnt_check funtion
[my-code/api.git] / event / event.c
index e3d60ab..2685168 100644 (file)
@@ -22,6 +22,14 @@ int event_init(t_event *event,int outfd) {
   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) {
@@ -46,6 +54,7 @@ int event_start(t_event *event,void *ptr,
 
   int s_ret;
   struct timeval tv;
+  struct timeval *tv_ptr;
 
   /* switch on event system */
   event->status=ENABLED;
@@ -56,8 +65,11 @@ int event_start(t_event *event,void *ptr,
     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;
     }
@@ -81,6 +93,13 @@ int event_start(t_event *event,void *ptr,
   return E_SUCCESS;
 }
 
+int event_check(t_event *event,int fd) {
+
+  if(FD_ISSET(fd,&(event->wfds))|FD_ISSET(fd,&(event->rfds))) return E_FD_YES;
+  else return E_FD_NO;
+
+}
+
 int event_stop(t_event *event) {
 
   dprintf(event->outfd,"[event] shutdown\n");