Provided by: tcllib_1.21+dfsg-1_all bug

NAME

       transfer::copy - Data transfer foundation

SYNOPSIS

       package require Tcl  8.4

       package require transfer::copy  ?0.2?

       transfer::copy::do chan|string data outchannel ?options...?

       transfer::copy::chan channel outchannel ?options...?

       transfer::copy::string string outchannel ?options...?

       transfer::copy::doChan channel outchannel optvar

       transfer::copy::doString string outchannel optvar

       transfer::copy::options outchannel optionlist optvar

________________________________________________________________________________________________________________

DESCRIPTION

       This  package  provides  a  number  of commands for the asynchronous of information contained in either a
       string or channel. The main point of this package is that the commands here provide a nicer callback  API
       than the builtin command fcopy, making the use of these facilities simpler than the builtin.

API

       transfer::copy::do chan|string data outchannel ?options...?
              This  command  transfers  the information in data to the outchannel, according to the options. The
              type of the information in data is determined by the first argument.

              The  options  available  to  this  command  are  the  same  as  are  available  to   the   command
              transfer::copy::options, and explained there.

              chan   The  argument  data contains the handle of a channel and the actual infomration to transfer
                     is read from that channel.

              string The argument data contains a string and this is the information to be transfered.

       transfer::copy::chan channel outchannel ?options...?
              This command is a shorter and more direct form for the command transfer::copy::do chan.

       transfer::copy::string string outchannel ?options...?
              This command is a shorter and more direct form for the command transfer::copy::do string.

       transfer::copy::doChan channel outchannel optvar
              This command is an alternate form of transfer::copy::chan which reads its options out of the array
              variable named by optvar instead of from a variable length argument list.

       transfer::copy::doString string outchannel optvar
              This command is an alternate form of transfer::copy::string which reads its  options  out  of  the
              array variable named by optvar instead of from a variable length argument list.

       transfer::copy::options outchannel optionlist optvar
              This  command is the option processor used by all the commands above which read their options from
              a variable length argument  list.  It  first  reads  default  settings  from  the  channel  handle
              outchannel,  then  processes  the list of options in optionlist, at last stores the results in the
              array variable named by optvar. The contents of that variable are in a format  which  is  directly
              understood by all the commands above which read their options out of an array variable.

              The recognized options are:

              -blocksize int
                     This  option  specifies the size of the chunks to transfer in one operation. It is optional
                     and defaults to the value of -buffersize as configured for the output channel.

                     If specified its value has to be an integer number greater than zero.

              -command commandprefix
                     This option specifies the completion callback of the  operation.  This  option  has  to  be
                     specified.  An  error  will  be  thrown if it is not, or if the empty list was specified as
                     argument to it.

                     Its value has to be a command prefix, i.e. a list  whose  first  word  is  the  command  to
                     execute,  followed by words containing fixed arguments. When the callback is invoked one or
                     two additional arguments are appended to the prefix. The first argument is  the  number  of
                     bytes  which were transfered. The optional second argument is an error message and added if
                     and only if an error occured during the the transfer.

              -progress commandprefix
                     This option specifies the progress callback of the operation. It is optional  and  defaults
                     to  the  empty  list.  This  last  possibility  signals  that no feedback was asked for and
                     disabled it.

                     Its value has to be a command prefix, see above, -command for a more detailed  explanation.
                     When  the callback is invoked a single additional arguments is appended to the prefix. This
                     argument is the number of bytes which were transfered so far.

              -size int
                     This option specifies the number of bytes to read from the input data and transfer.  It  is
                     optional  and defaults to "Transfer everything".  Its value has to be an integer number and
                     any value less than zero has the same meaning, i.e. to transfer  all  available  data.  Any
                     other value is the amount of bytes to transfer.

                     All  transfer commands will throw error an when their user tries to transfer more data than
                     is available in the input. This  happens  immediately,  before  the  transfer  is  actually
                     started,  should  the  input  be  a string. Otherwise the, i.e. for a channel as input, the
                     error is thrown the moment the underflow condition is actually detected.

              -encoding encodingname

              -eofchar eofspec

              -translation transspec
                     These options are the same as are recognized by the builtin command fconfigure and  provide
                     the  settings  for  the output channel which are to be active during the transfer, and only
                     then. I.e. the settings of the output channel before the transfer are saved,  and  restored
                     at  the  end of a transfer, regardless of its success or failure. None of these options are
                     required, and they default to the settings of the output channel if not specified.

BUGS, IDEAS, FEEDBACK

       This document, and the package it describes, will undoubtedly contain bugs and  other  problems.   Please
       report  such  in  the  category  transfer  of the Tcllib Trackers [http://core.tcl.tk/tcllib/reportlist].
       Please also report any ideas for enhancements you may have for either package and/or documentation.

       When proposing code changes, please provide unified diffs, i.e the output of diff -u.

       Note further that attachments are strongly preferred over inlined patches. Attachments  can  be  made  by
       going  to the Edit form of the ticket immediately after its creation, and then using the left-most button
       in the secondary navigation bar.

KEYWORDS

       channel, copy, transfer

CATEGORY

       Transfer module

COPYRIGHT

       Copyright (c) 2006-2009 Andreas Kupries <andreas_kupries@users.sourceforge.net>

tcllib                                                 0.2                                  transfer::copy(3tcl)