X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Feventl.c;h=980036e37af061e5e4dd0e38187322aca2b394b0;hb=d5ffc2f6e667c1d849bf7579add8435664e678c5;hp=cc8a6b98c452f35ba5c5f142c8ff925dbcd2fd1a;hpb=235995289021a11b33312c91a55ccfbca605348b;p=pazpar2-moved-to-github.git diff --git a/src/eventl.c b/src/eventl.c index cc8a6b9..980036e 100644 --- a/src/eventl.c +++ b/src/eventl.c @@ -1,12 +1,32 @@ +/* $Id: eventl.c,v 1.8 2007-10-02 07:50:12 adam Exp $ + Copyright (c) 2006-2007, Index Data. + +This file is part of Pazpar2. + +Pazpar2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Pazpar2 is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Pazpar2; see the file LICENSE. If not, write to the +Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. + */ + /* - * ParaZ - a simple tool for harvesting performance data for parallel - * operations using Z39.50. + * Based on ParaZ - a simple tool for harvesting performance data for + * parallel operations using Z39.50. * Copyright (c) 2000-2004 Index Data ApS * See LICENSE file for details. */ /* - * $Id: eventl.c,v 1.3 2007-03-28 12:05:18 marc Exp $ * Based on revision YAZ' server/eventl.c 1.29. */ @@ -17,7 +37,12 @@ #include #endif - +#ifdef WIN32 +#include +#else +#include +#endif +#include #include #include #include @@ -26,13 +51,10 @@ #include #include #include -#include - #include "eventl.h" +#include - -IOCHAN iochan_create(int fd, struct sockaddr_in *addr_in, - IOC_CALLBACK cb, int flags) +IOCHAN iochan_create(int fd, IOC_CALLBACK cb, int flags) { IOCHAN new_iochan; @@ -40,14 +62,6 @@ IOCHAN iochan_create(int fd, struct sockaddr_in *addr_in, return 0; new_iochan->destroyed = 0; new_iochan->fd = fd; - - if(addr_in){ - new_iochan->addr_in.sin_family = addr_in->sin_family; - new_iochan->addr_in.sin_port = addr_in->sin_port; - new_iochan->addr_in.sin_addr = addr_in->sin_addr; - strncpy(new_iochan->addr_str, inet_ntoa(addr_in->sin_addr), 64); - } - new_iochan->flags = flags; new_iochan->fun = cb; new_iochan->force_event = 0; @@ -70,7 +84,7 @@ int event_loop(IOCHAN *iochans) FD_ZERO(&out); FD_ZERO(&except); timeout = &to; /* hang on select */ - to.tv_sec = 30; + to.tv_sec = 15; to.tv_usec = 0; max = 0; for (p = *iochans; p; p = p->next) @@ -87,6 +101,8 @@ int event_loop(IOCHAN *iochans) FD_SET(p->fd, &except); if (p->fd > max) max = p->fd; + if (p->max_idle && p->max_idle < to.tv_sec) + to.tv_sec = p->max_idle; } if ((res = select(max + 1, &in, &out, &except, timeout)) < 0) {