Tcl Library Procedures Tcl_CreateChannelHandler(3TCL)
_________________________________________________________________
NAME
Tcl_CreateChannelHandler, Tcl_DeleteChannelHandler - call a
procedure when a channel becomes readable or writableSYNOPSIS
#include
voidTcl_CreateChannelHandler(channel, mask, proc, clientData)
voidTcl_DeleteChannelHandler(channel, proc, clientData)
ARGUMENTSTcl_Channel channel (in) Tcl channel such as
returned byTcl_CreateChannel.
int mask (in) Conditions under which proc shouldbe called: OR-ed
combination ofTCL_READABLE,
TCL_WRITABLE and
TCL_EXCEPTION.
Specify a zerovalue to tem-
porarily disable an existing handler.Tcl_FileProc *proc (in) Procedure to invoke
whenever the chan-
nel indicated by channel meets theconditions speci-
fied by mask.ClientData clientData (in) Arbitrary one-word
value to pass to proc._________________________________________________________________
DESCRIPTION
Tcl_CreateChannelHandler arranges for proc to be called in
the future whenever input or output becomes possible on the channel identified by channel, or whenever an exceptional condition exists for channel. The conditions of interest under which proc will be invoked are specified by the mask Tcl Last change: 7.5 1Tcl Library Procedures Tcl_CreateChannelHandler(3TCL)
argument. See the manual entry for fileevent for a precise description of what it means for a channel to be readable or writable. Proc must conform to the following prototype:typedef void Tcl_ChannelProc(
ClientData clientData, int mask); The clientData argument is the same as the value passed toTcl_CreateChannelHandler when the handler was created. Typi-
cally, clientData points to a data structure containingapplication-specific information about the channel. Mask is
an integer mask indicating which of the requested conditions actually exists for the channel; it will contain a subset ofthe bits from the mask argument to Tcl_CreateChannelHandler
when the handler was created. Each channel handler is identified by a unique combination of channel, proc and clientData. There may be many handlers for a given channel as long as they don't have the samechannel, proc, and clientData. If Tcl_CreateChannelHandler
is invoked when there is already a handler for channel, proc, and clientData, then no new handler is created; instead, the mask is changed for the existing handler.Tcl_DeleteChannelHandler deletes a channel handler identi-
fied by channel, proc and clientData; if no such handler exists, the call has no effect. Channel handlers are invoked via the Tcl event mechanism, sothey are only useful in applications that are event-driven.
Note also that the conditions specified in the mask argumentto proc may no longer exist when proc is invoked: for exam-
ple, if there are two handlers for TCL_READABLE on the same
channel, the first handler could consume all of the avail-
able input so that the channel is no longer readable when the second handler is invoked. For this reason it may beuseful to use nonblocking I/O on channels for which there are event handlers.
SEE ALSO
Notifier(3TCL), Tcl_CreateChannel(3TCL),
Tcl_OpenFileChannel(3TCL), vwait(1T).
KEYWORDS blocking, callback, channel, events, handler, nonblocking.ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes: Tcl Last change: 7.5 2Tcl Library Procedures Tcl_CreateChannelHandler(3TCL)
_______________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE|
|____________________|__________________|_
| Availability | runtime/tcl-8 |
|____________________|__________________|_
| Interface Stability| Uncommitted ||____________________|_________________|
NOTES Source for Tcl is available on http://opensolaris.org. Tcl Last change: 7.5 3