X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Feventl.c;h=70230030783bdb53130dedef0960425b23de0e6e;hp=2392cc8317bdf60fd61836a6b6813cebefed1f30;hb=62fd62f25a6893d042c4c87f8c770929fd8cf95d;hpb=fb6d99a0c7e07d9cc4a315c447deaf6564a85505 diff --git a/src/eventl.c b/src/eventl.c index 2392cc8..7023003 100644 --- a/src/eventl.c +++ b/src/eventl.c @@ -1,8 +1,8 @@ /* - * Copyright (C) 1995-2005, Index Data ApS + * Copyright (C) 1995-2007, Index Data ApS * See the file LICENSE for details. * - * $Id: eventl.c,v 1.9 2005-06-25 15:46:04 adam Exp $ + * $Id: eventl.c,v 1.11 2007-01-03 08:42:15 adam Exp $ */ /** @@ -78,6 +78,31 @@ IOCHAN iochan_create(int fd, IOC_CALLBACK cb, int flags, int chan_id) return new_iochan; } +int iochan_is_alive(IOCHAN chan) +{ + static struct timeval to; + fd_set in, out, except; + int res, max; + + to.tv_sec = 0; + to.tv_usec = 0; + + FD_ZERO(&in); + FD_ZERO(&out); + FD_ZERO(&except); + + FD_SET(chan->fd, &in); + + max = chan->fd + 1; + + res = YAZ_EV_SELECT(max + 1, &in, 0, 0, &to); + if (res == 0) + return 1; + if (!ir_read(chan, EVENT_INPUT)) + return 0; + return 1; +} + int event_loop(IOCHAN *iochans) { do /* loop as long as there are active associations to process */