home *** CD-ROM | disk | FTP | other *** search
- '\"
- '\" Copyright (c) 1990 The Regents of the University of California.
- '\" All rights reserved.
- '\"
- '\" Permission is hereby granted, without written agreement and without
- '\" license or royalty fees, to use, copy, modify, and distribute this
- '\" documentation for any purpose, provided that the above copyright
- '\" notice and the following two paragraphs appear in all copies.
- '\"
- '\" IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
- '\" FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- '\" ARISING OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
- '\" CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- '\"
- '\" THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- '\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- '\" AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- '\" ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
- '\" PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- '\"
- '\" $Header: /user6/ouster/wish/man/RCS/FileHndlr.3,v 1.7 93/04/01 09:41:21 ouster Exp $ SPRITE (Berkeley)
- '\"
- .so man.macros
- .HS Tk_CreateFileHandler tkc
- .BS
- .SH NAME
- Tk_CreateFileHandler, Tk_DeleteFileHandler \- associate procedure callback with a file or device
- .SH SYNOPSIS
- .nf
- \fB#include <tk.h>\fR
- .sp
- \fBTk_CreateFileHandler\fR(\fIid, mask, proc, clientData\fR)
- .sp
- \fBTk_DeleteFileHandler\fR(\fIid\fR)
- .SH ARGUMENTS
- .AS Tk_FileProc clientData
- .AP int id in
- Integer identifier for an open file or device (such as returned by
- \fBopen\fR system call).
- .AP int mask in
- Conditions under which \fIproc\fR should be called:
- OR-ed combination of \fBTK_READABLE\fR, \fBTK_WRITABLE\fR,
- and \fBTK_EXCEPTION\fR.
- .AP Tk_FileProc *proc in
- Procedure to invoke whenever the file or device indicated
- by \fIid\fR meets the conditions specified by \fImask\fR.
- .AP ClientData clientData in
- Arbitrary one-word value to pass to \fIproc\fR.
- .BE
-
- .SH DESCRIPTION
- .PP
- \fBTk_CreateFileHandler\fR arranges for \fIproc\fR to be
- invoked in the future whenever I/O becomes possible on a file
- or an exceptional condition exists for the file. The file
- is indicated by \fIid\fR, and the conditions of interest
- are indicated by \fImask\fR. For example, if \fImask\fR
- is \fBTK_READABLE\fR, then \fIproc\fR will be called when
- the file is readable.
- The callback to \fIproc\fR is made by \fBTk_DoOneEvent\fR, so
- \fBTk_CreateFileHandler\fR is only useful
- in programs that dispatch events
- through \fBTk_DoOneEvent\fR or through other Tk procedures that
- call \fBTk_DoOneEvent\fR, such as \fBTk_MainLoop\fR.
- .PP
- \fIProc\fP should have arguments and result that match the
- type \fBTk_FileProc\fR:
- .nf
- .RS
- typedef void Tk_FileProc(
- .RS
- ClientData \fIclientData\fR,
- int \fImask\fR);
- .RE
- .RE
- .fi
- The \fIclientData\fP parameter to \fIproc\fR is a copy
- of the \fIclientData\fP
- argument given to \fBTcl_CreateFileHandler\fR when the callback
- was created. Typically, \fIclientData\fR points to a data
- structure containing application-specific information about
- the file. \fIMask\fR is an integer mask indicating which
- of the requested conditions actually exists for the file; it
- will contain a subset of the bits in the \fImask\fR argument
- to \fBTcl_CreateFileHandler\fR.
- .PP
- There may exist only one handler for a given file at a given
- time. If \fBTk_CreateEventHandler\fR is called when a handler
- already exists for \fIid\fR, then the \fImask\fR, \fIproc\fR,
- and \fIclientData\fR for the new call to
- \fBTk_CreateEventHandler\fR replace the information that was
- previously recorded.
- .PP
- \fBTk_DeleteFileHandler\fR may be called to delete the
- file handler for \fIid\fR; if no handler exists for the
- file given by \fIid\fR then the procedure has no effect.
- .PP
- The purpose of file handlers is to enable an application to
- respond to X events and other events while waiting for files
- to become ready for I/O. For this to work correctly, the
- application must use non-blocking I/O operations on the
- files for which handlers are declared. Otherwise the application
- may be put to sleep if it specifies too large an input or
- output buffer; while waiting for the I/O to complete the
- application won't be able to service other events. In BSD-based
- UNIX systems, non-blocking I/O can be specified for a file using
- the \fBfcntl\fR kernel call with the \fBFNDELAY\fR flag.
-
- .SH KEYWORDS
- callback, file, handler
-