CrtChnlHdlr.3
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1996 Sun Microsystems, Inc.
  3. '"
  4. '" See the file "license.terms" for information on usage and redistribution
  5. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  6. '"
  7. '" RCS: @(#) $Id: CrtChnlHdlr.3,v 1.2 1998/09/14 18:39:46 stanton Exp $
  8. .so man.macros
  9. .TH Tcl_CreateChannelHandler 3 7.5 Tcl "Tcl Library Procedures"
  10. .BS
  11. '" Note:  do not modify the .SH NAME line immediately below!
  12. .SH NAME
  13. Tcl_CreateChannelHandler, Tcl_DeleteChannelHandler - call a procedure when a channel becomes readable or writable
  14. .SH SYNOPSIS
  15. .nf
  16. .nf
  17. fB#include <tcl.h>fR
  18. .sp
  19. void
  20. fBTcl_CreateChannelHandlerfR(fIchannel, mask, proc, clientDatafR)
  21. .sp
  22. void
  23. fBTcl_DeleteChannelHandlerfR(fIchannel, proc, clientDatafR)
  24. .sp
  25. .SH ARGUMENTS
  26. .AS Tcl_ChannelProc clientData
  27. .AP Tcl_Channel channel in
  28. Tcl channel such as returned by fBTcl_CreateChannelfR.
  29. .AP int mask in
  30. Conditions under which fIprocfR should be called: OR-ed combination of
  31. fBTCL_READABLEfR, fBTCL_WRITABLEfR and fBTCL_EXCEPTIONfR. Specify
  32. a zero value to temporarily disable an existing handler.
  33. .AP Tcl_FileProc *proc in
  34. Procedure to invoke whenever the channel indicated by fIchannelfR meets
  35. the conditions specified by fImaskfR.
  36. .AP ClientData clientData in
  37. Arbitrary one-word value to pass to fIprocfR.
  38. .BE
  39. .SH DESCRIPTION
  40. .PP
  41. fBTcl_CreateChannelHandlerfR arranges for fIprocfR to be called in the
  42. future whenever input or output becomes possible on the channel identified
  43. by fIchannelfR, or whenever an exceptional condition exists for
  44. fIchannelfR. The conditions of interest under which fIprocfR will be
  45. invoked are specified by the fImaskfR argument.
  46. See the manual entry for fBfileeventfR for a precise description of
  47. what it means for a channel to be readable or writable.
  48. fIProcfR must conform to the following prototype:
  49. .CS
  50. typedef void Tcl_ChannelProc(
  51. ClientData fIclientDatafR,
  52. int fImaskfR);
  53. .CE
  54. .PP
  55. The fIclientDatafR argument is the same as the value passed to
  56. fBTcl_CreateChannelHandlerfR when the handler was created. Typically,
  57. fIclientDatafR points to a data structure containing application-specific
  58. information about the channel. fIMaskfR is an integer mask indicating
  59. which of the requested conditions actually exists for the channel; it will
  60. contain a subset of the bits from the fImaskfR argument to
  61. fBTcl_CreateChannelHandlerfR when the handler was created.
  62. .PP
  63. Each channel handler is identified by a unique combination of fIchannelfR,
  64. fIprocfR and fIclientDatafR.
  65. There may be many handlers for a given channel as long as they don't
  66. have the same fIchannelfR, fIprocfR, and fIclientDatafR.
  67. If fBTcl_CreateChannelHandlerfR is invoked when there is already a handler
  68. for fIchannelfR, fIprocfR, and fIclientDatafR, then no new
  69. handler is created;  instead, the fImaskfR is changed for the
  70. existing handler.
  71. .PP
  72. fBTcl_DeleteChannelHandlerfR deletes a channel handler identified by
  73. fIchannelfR, fIprocfR and fIclientDatafR; if no such handler exists,
  74. the call has no effect.
  75. .PP
  76. Channel handlers are invoked via the Tcl event mechanism, so they
  77. are only useful in applications that are event-driven.
  78. Note also that the conditions specified in the fImaskfR argument
  79. to fIprocfR may no longer exist when fIprocfR is invoked:  for
  80. example, if there are two handlers for fBTCL_READABLEfR on the same
  81. channel, the first handler could consume all of the available input
  82. so that the channel is no longer readable when the second handler
  83. is invoked.
  84. For this reason it may be useful to use nonblocking I/O on channels
  85. for which there are event handlers.
  86. .SH "SEE ALSO"
  87. Notifier(3), Tcl_CreateChannel(3), Tcl_OpenFileChannel(3), vwait(n).
  88. .SH KEYWORDS
  89. blocking, callback, channel, events, handler, nonblocking.