About
Docs
Files
Support
Index

Essentials
AutoDocs
Library functions
Cooperate
Process mastering
Debug
Own debugging kit
FGE
Smart modeid pick
Loader
Shared lib. loader
Macros
Helper macros
Structs
All the structures
Logs
Library changelogs
Tools
Progs baked inside

Tools
amiscreen0.3
ansifilter0.1
auto2guide0.1
ccfilter0.1
chipset0.1
cputype0.1
device640.1
dupfilter0.1
expandlogs0.1
findsm0.2
fmpp0.1
fsmount0.1
genanim0.3
gensymtab0.1
hashlab0.4
ktm0.6
linkpoint0.1
logo2ilbm0.1
lpradio0.1
lzwpack0.1
minism0.2
mkheader0.1
modeidctrl0.1
mss0.6
multisum0.3
newterm0.2
numconv0.1
palhack1.1
patmat0.1
pfr0.2
playamitape0.1
qdbflags0.1
qfill0.1
resmodinit0.2
sadctrl0.2
saveassign0.1
setanim0.2
systime0.1
tokendump0.1
uassign0.1
viewlogo0.1
waitback0.4
wrapmount0.1



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
    










No more fear cus pure HTML is here!
Copyright (C) 2013-2014 by Burnt Chip Dominators