X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Feventl.c;h=649e6de11b2c0f4c0a02d4efb6693e3b90228fcb;hb=60a702f390f7e2addfdab79f2328db3ba2897c8b;hp=ac562642adac53b235b1143d30acc6eee03507f4;hpb=c6e47cbbff56f39f6d81b079ebaeac41d793d4d9;p=yaz-moved-to-github.git diff --git a/src/eventl.c b/src/eventl.c index ac56264..649e6de 100644 --- a/src/eventl.c +++ b/src/eventl.c @@ -1,21 +1,39 @@ /* - * Copyright (c) 1995-2003, Index Data + * Copyright (C) 1995-2005, Index Data ApS * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss * - * $Id: eventl.c,v 1.1 2003-10-27 12:21:30 adam Exp $ + * $Id: eventl.c,v 1.7 2005-02-01 14:46:47 adam Exp $ + */ + +/** + * \file eventl.c + * \brief Implements event loop handling for GFS. + * + * This source implements the main event loop for the Generic Frontend + * Server. It uses select(2). */ -#include #include +#include +#include +#include +#include + +#if HAVE_SYS_TYPES_H +#include +#endif +#if HAVE_SYS_TIME_H +#include +#endif #ifdef WIN32 #include -#else +#endif +#if HAVE_UNISTD_H #include #endif -#include -#include -#include +#if HAVE_SYS_SELECT_H +#include +#endif #include #include @@ -34,10 +52,19 @@ #define YAZ_EV_SELECT select #endif -IOCHAN iochan_create(int fd, IOC_CALLBACK cb, int flags) +static int log_level=0; +static int log_level_initialized=0; + +IOCHAN iochan_create(int fd, IOC_CALLBACK cb, int flags, int port) { IOCHAN new_iochan; + if (!log_level_initialized) + { + log_level=yaz_log_module_level("eventl"); + log_level_initialized=1; + } + if (!(new_iochan = (IOCHAN)xmalloc(sizeof(*new_iochan)))) return 0; new_iochan->destroyed = 0; @@ -47,6 +74,7 @@ IOCHAN iochan_create(int fd, IOC_CALLBACK cb, int flags) new_iochan->force_event = 0; new_iochan->last_event = new_iochan->max_idle = 0; new_iochan->next = NULL; + new_iochan->port = port; return new_iochan; } @@ -74,7 +102,7 @@ int event_loop(IOCHAN *iochans) for (p = *iochans; p; p = p->next) { time_t w, ftime; - yaz_log(LOG_DEBUG, "fd=%d flags=%d force_event=%d", + yaz_log(log_level, "fd=%d flags=%d force_event=%d", p->fd, p->flags, p->force_event); if (p->force_event) to.tv_sec = 0; /* polling select */ @@ -97,9 +125,9 @@ int event_loop(IOCHAN *iochans) to.tv_sec = w; } } - yaz_log(LOG_DEBUG, "select start %ld", (long) to.tv_sec); + yaz_log(log_level, "select start %ld", (long) to.tv_sec); res = YAZ_EV_SELECT(max + 1, &in, &out, &except, &to); - yaz_log(LOG_DEBUG, "select end"); + yaz_log(log_level, "select end"); if (res < 0) { if (yaz_errno() == EINTR) @@ -120,7 +148,7 @@ int event_loop(IOCHAN *iochans) cs_close(conn); destroy_association(assoc); iochan_destroy(*iochans); - yaz_log(LOG_DEBUG, "error select, destroying iochan %p", + yaz_log(log_level, "error select, destroying iochan %p", *iochans); } }