X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Feventl.c;h=2fcac055b7bb7935377fbd0ca11320823b9aa930;hb=b5fec6a001dbcd8b303a11cede8b6c55512dbda0;hp=2392cc8317bdf60fd61836a6b6813cebefed1f30;hpb=fb6d99a0c7e07d9cc4a315c447deaf6564a85505;p=yaz-moved-to-github.git diff --git a/src/eventl.c b/src/eventl.c index 2392cc8..2fcac05 100644 --- a/src/eventl.c +++ b/src/eventl.c @@ -2,7 +2,7 @@ * Copyright (C) 1995-2005, 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.10 2006-12-04 14:56:55 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 */