From 7f22a88d407609fc8a4f8554ef754dd649145447 Mon Sep 17 00:00:00 2001 From: Sebastian Hammer Date: Wed, 15 Mar 1995 08:37:40 +0000 Subject: [PATCH] Now we're pretty much set for nonblocking I/O. --- server/Makefile | 4 ++-- server/eventl.c | 9 +++++---- server/eventl.h | 7 ++++++- server/statserv.c | 13 +++++++++---- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/server/Makefile b/server/Makefile index 638e835..cd2ce5a 100644 --- a/server/Makefile +++ b/server/Makefile @@ -1,7 +1,7 @@ # Copyright (C) 1994, Index Data I/S # All rights reserved. # Sebastian Hammer, Adam Dickmeiss -# $Id: Makefile,v 1.5 1995-03-15 08:27:15 adam Exp $ +# $Id: Makefile,v 1.6 1995-03-15 08:37:40 quinn Exp $ SHELL=/bin/sh INCLUDE=-I../include -I. -I../asn -I../odr -I../yazlib -I../../egate/include\ @@ -19,7 +19,7 @@ PROGO=statserv.o session.o all: $(LIBDIR) $(LIB) $(PROG) -$(PROG): $(LIB) $(PROGO) +$(PROG): $(LIB) $(PROGO) pwrite.o $(CC) $(CFLAGS) $(LIBINCLUDE) -o $(PROG) $(PROGO) $(LIBS) alll: diff --git a/server/eventl.c b/server/eventl.c index 1780a01..104088c 100644 --- a/server/eventl.c +++ b/server/eventl.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: eventl.c,v $ - * Revision 1.4 1995-03-14 16:59:48 quinn + * Revision 1.5 1995-03-15 08:37:41 quinn + * Now we're pretty much set for nonblocking I/O. + * + * Revision 1.4 1995/03/14 16:59:48 quinn * Bug-fixes * * Revision 1.3 1995/03/14 11:30:14 quinn @@ -78,8 +81,6 @@ int event_loop() continue; return 1; } - if (!res) - continue; for (p = iochans; p; p = nextp) { int force_event = p->force_event; @@ -88,7 +89,7 @@ int event_loop() nextp = p->next; if (FD_ISSET(p->fd, &in) || force_event == EVENT_INPUT) (*p->fun)(p, EVENT_INPUT); - if (!p->destroyed && (FD_ISSET(p->fd, &in) || + if (!p->destroyed && (FD_ISSET(p->fd, &out) || force_event == EVENT_OUTPUT)) (*p->fun)(p, EVENT_OUTPUT); if (!p->destroyed && (FD_ISSET(p->fd, &except) || diff --git a/server/eventl.h b/server/eventl.h index 5c6e822..1ef43a2 100644 --- a/server/eventl.h +++ b/server/eventl.h @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: eventl.h,v $ - * Revision 1.2 1995-03-14 10:28:00 quinn + * Revision 1.3 1995-03-15 08:37:42 quinn + * Now we're pretty much set for nonblocking I/O. + * + * Revision 1.2 1995/03/14 10:28:00 quinn * More work on demo server. * * Revision 1.1 1995/03/10 18:22:45 quinn @@ -41,6 +44,8 @@ int force_event; #define iochan_setdata(i, d) ((i)->data = d) #define iochan_getflags(i) ((i)->flags) #define iochan_setflags(i, d) ((i)->flags = d) +#define iochan_setflag(i, d) ((i)->flags |= d) +#define iochan_getflag(i, d) ((i)->flags & d ? 1 : 0) #define iochan_getfun(i) ((i)->fun) #define iochan_setfun(i, d) ((i)->fun = d) #define iochan_setevent(i, e) ((i)->force_event = (e)) diff --git a/server/statserv.c b/server/statserv.c index 1ceae58..a0e9e14 100644 --- a/server/statserv.c +++ b/server/statserv.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: statserv.c,v $ - * Revision 1.4 1995-03-14 16:59:48 quinn + * Revision 1.5 1995-03-15 08:37:45 quinn + * Now we're pretty much set for nonblocking I/O. + * + * Revision 1.4 1995/03/14 16:59:48 quinn * Bug-fixes * * Revision 1.3 1995/03/14 11:30:15 quinn @@ -54,7 +57,8 @@ void listener(IOCHAN h, int event) fprintf(stderr, "cs_listen failed.\n"); exit(1); } - iochan_setflags(h, EVENT_OUTPUT); /* set us up for accepting */ + iochan_setevent(h, EVENT_OUTPUT); + iochan_setflags(h, EVENT_OUTPUT | EVENT_EXCEPT); /* set up for acpt */ } else if (event == EVENT_OUTPUT) { @@ -78,7 +82,7 @@ void listener(IOCHAN h, int event) exit(1); } iochan_setdata(new_chan, newas); - iochan_setflags(h, EVENT_INPUT); /* reset for listening */ + iochan_setflags(h, EVENT_INPUT | EVENT_EXCEPT); /* reset for listen */ } else { @@ -141,7 +145,8 @@ void add_listener(char *where) perror(where); exit(1); } - if (!(lst = iochan_create(cs_fileno(l), listener, EVENT_INPUT))) + if (!(lst = iochan_create(cs_fileno(l), listener, EVENT_INPUT | + EVENT_EXCEPT))) { fprintf(stderr, "Failed to create IOCHAN-type\n"); exit(1); -- 1.7.10.4