[vset VERSION 1.0.1] [comment {-*- tcl -*- doctools manpage}] [manpage_begin tcl::chan::halfpipe n [vset VERSION]] [keywords callbacks] [keywords fifo] [keywords {in-memory channel}] [keywords {reflected channel}] [keywords {tip 219}] [keywords {virtual channel}] [copyright {2009, 2019 Andreas Kupries }] [moddesc {Reflected/virtual channel support}] [category Channels] [titledesc {In-memory channel, half of a fifo2}] [require Tcl 8.5] [require TclOO] [require tcl::chan::events [opt 1]] [require tcl::chan::halfpipe [opt [vset VERSION]]] [description] [para] The [package tcl::chan::halfpipe] package provides a command creating one half of a [package tcl::chan::fifo2] pair. Writing into such a channel invokes a set of callbacks which then handle the data. This is similar to a channel handler, except having a much simpler API. [para] The internal [package TclOO] class implementing the channel handler is a sub-class of the [package tcl::chan::events] framework. [section API] [list_begin definitions] [call [cmd ::tcl::chan::halfpipe] [opt "[option -option] [arg value]..."]] This command creates a halfpipe channel and configures it with the callbacks to run when the channel is closed, data was written to it, or ran empty. See the section [sectref Options] for the list of options and associated semantics. The result of the command is a list containing two elements, the handle of the new channel, and the object command of the channel handler, in this order. The latter is supplied to the caller to provide her with access to the [method put] method for adding data to the channel. [para] Two halfpipes with a bit of glue logic in the callbacks make for one [package tcl::chan::fifo2]. [call [arg objectCmd] [method put] [arg bytes]] This method of the channel handler object puts the data [arg bytes] into the channel so that it can be read from it. [list_end] [section Options] [list_begin options] [opt_def -close-command cmdprefix] This callback is invoked when the channel is closed. A single argument is supplied, the handle of the channel being closed. The result of the callback is ignored. [opt_def -write-command cmdprefix] This callback is invoked when data is written to the channel. Two arguments are supplied, the handle of the channel written to, and the data written. The result of the callback is ignored. [opt_def -empty-command cmdprefix] This callback is invoked when the channel has run out of data to read. A single argument is supplied, the handle of the channel. [list_end] [vset CATEGORY virtchannel] [include ../common-text/feedback.inc] [manpage_end]