From a515162931c35db517995e3427cb41cee2a63a0a Mon Sep 17 00:00:00 2001 From: nop Date: Mon, 3 Mar 1997 03:44:59 +0000 Subject: Initial revision --- net_mplex.h | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 net_mplex.h (limited to 'net_mplex.h') diff --git a/net_mplex.h b/net_mplex.h new file mode 100644 index 0000000..f0867ba --- /dev/null +++ b/net_mplex.h @@ -0,0 +1,88 @@ +/****************************************************************************** + Copyright (c) 1992, 1995, 1996 Xerox Corporation. All rights reserved. + Portions of this code were written by Stephen White, aka ghond. + Use and copying of this software and preparation of derivative works based + upon this software are permitted. Any distribution of this software or + derivative works must comply with all applicable United States export + control laws. This software is made available AS IS, and Xerox Corporation + makes no warranty about the software, its performance or its conformity to + any specification. Any person obtaining a copy of this software is requested + to send their name and post office or electronic mail address to: + Pavel Curtis + Xerox PARC + 3333 Coyote Hill Rd. + Palo Alto, CA 94304 + Pavel@Xerox.Com + *****************************************************************************/ + +/* This describes the complete set of procedures that a multiplexing wait + * implementation must provide. + * + * The `mplex' abstraction provides a way to wait until it is possible to + * perform an I/O operation on any of a set of file descriptors without + * blocking. Uses of the abstraction always have the following form: + * + * mplex_clear(); + * { mplex_add_reader(fd) or mplex_add_writer(fd) }* + * timed_out = mplex_wait(timeout); + * { mplex_is_readable(fd) or mplex_is_writable(fd) }* + * + * The set of file descriptors maintained by the abstraction is referred to + * below as the `wait set'. Each file descriptor in the wait set is marked + * with the kind of I/O (i.e., reading, writing, or both) desired. + */ + +#ifndef Net_MPlex_H +#define Net_MPlex_H 1 + +extern void mplex_clear(void); + /* Reset the wait set to be empty. */ + +extern void mplex_add_reader(int fd); + /* Add the given file descriptor to the wait + * set, marked for reading. + */ + +extern void mplex_add_writer(int fd); + /* Add the given file descriptor to the wait + * set, marked for writing. + */ + +extern int mplex_wait(unsigned timeout); + /* Wait until it is possible either to do the + * appropriate kind of I/O on some descriptor + * in the wait set or until `timeout' seconds + * have elapsed. Return true iff the timeout + * expired without any I/O becoming possible. + */ + +extern int mplex_is_readable(int fd); + /* Return true iff the most recent mplex_wait() + * call terminated (in part) because reading + * had become possible on the given descriptor. + */ + +extern int mplex_is_writable(int fd); + /* Return true iff the most recent mplex_wait() + * call terminated (in part) because reading + * had become possible on the given descriptor. + */ + +#endif /* !Net_MPlex_H */ + +/* $Log$ +/* Revision 1.1 1997/03/03 03:45:04 nop +/* Initial revision +/* + * Revision 2.1 1996/02/08 06:18:23 pavel + * Updated copyright notice for 1996. Release 1.8.0beta1. + * + * Revision 2.0 1995/11/30 04:53:08 pavel + * New baseline version, corresponding to release 1.8.0alpha1. + * + * Revision 1.2 1992/10/23 23:03:47 pavel + * Added copyright notice. + * + * Revision 1.1 1992/09/23 17:14:17 pavel + * Initial RCS-controlled version. + */ -- cgit v1.2.3