|
| | | | Q F I L L
| | | | |
qfill-0.1
----------
---
Lack of the right buffering strategy is always a problem when it comes to
using handlers(pipes, network) who can block at any point burrying time
critical I/O. This has to stop, and that is why this prog was born.
Aside from rollover buffer 'qfill' features true asynchronous input and
output with freely scalable receive and transmit spaces.
This prog is nothing more than a crippled 'copy' command with the emphasis
on number of buffering combinations.
Please note, proggy originally written for use with 'linkpoint' as
a caching source splitter.
---
NOTES:
[*]
Requires 68020(no FPU)+, OS2.04(theoretically)+, 32+ kilos of free memory
[*]
Local environment variable 'QFILLSEEK' will be read on each launch. Place
there offset at which transfer should start.
---
HELP:
> qfill ?
IF=INPUTFILE/A,OF=OUTPUTFILE/A,IS=INPUTSIZE/N,OS=OUTPUTSIZE/N,
BS=BUFFERSIZE/N,FE=FEEDEVERY/N,RF=REOPENFILE/S,AF=ASYNCFILL/S,
AP=ASYNCPUSH/S,V=VERBOSE/S
IF=INPUTFILE/A - Source object that will provide the data to buffer.
OF=OUTPUTFILE/A - Destination object that will receive the data.
IS=INPUTSIZE/N - Receive area that will be used to fetch the data. By
default 2048(cannot be lower than that) bytes.
OS=OUTPUTSIZE/N - Transmit area that will be used to export buffered
data. By default 4096 bytes.
BS=BUFFERSIZE/N - Size of main circular buffer. This buffer may be set
according to receive and/or transmit spaces if they
are bigger than this. By default 16384 bytes will be
allocated.
FE=FEEDEVERY/N - Try to export data every n fills while buffering. If
set to -1 then the feed will happen after the very
first fill only. 0 disables this feature. By default
enforced data export will happen every 5 fills.
RF=REOPENFILE/S - Reopen input file on EOF. Useful when dealing with
streams. Please note that broken streams will be
detected, so possibility of infinite loop is very
low.
AF=ASYNCFILL/S - Do the input in an asynchronous manner. You really
want to use this when dealing with handlers who are
not able to provide the supply of data constantly.
AP=ASYNCPUSH/S - Do the output in an asynchronous way. Use this when
handler tends to block due to inability to process
excess data.
V=VERBOSE/S - Let the proggy talk on what is currently going on.
---
USAGE:
; Coalesce writes at 128 KiB
qfill <in> <out> fe 0 os 131072 v
; Attempt to export only when buffer is full
qfill <in> <out> fe 0 bs 131072 v
; Try to fill the buffer as much as possible
; but balance the I/O at a time
qfill <in> <out> af ap bs 524288 v
---
megacz
| |
| | | | |
|