| \ tag: deblocker support package |
| \ |
| \ Copyright (C) 2003 Stefan Reinauer |
| \ |
| \ See the file "COPYING" for further information about |
| \ the copyright and warranty status of this work. |
| \ |
| |
| " /packages" find-device |
| |
| \ The deblocker package makes it easy to implement byte-oriented device |
| \ methods, using the block-oriented or record-oriented methods defined by |
| \ devices such as disks or tapes. It provides a layer of buffering between |
| \ the high-level byte-oriented interface and the low-level block-oriented |
| \ interface. deblocker uses the max-transfer, block-size, read-blocks and |
| \ write-blocks methods of its parent. |
| |
| new-device |
| " deblocker" device-name |
| \ open ( -- flag ) |
| \ Prepares the package for subsequent use, allocating the buffers used |
| \ by the deblocking process based upon the values returned by the parent |
| \ instance's max-transfer and block-size methods. Returns -1 if the |
| \ operation succeeds, 0 otherwise. |
| : open ( -- flag ) |
| |
| ; |
| |
| \ close ( -- ) |
| \ Frees all resources that were allocated by open. |
| : close ( -- ) |
| ; |
| |
| \ read ( adr len -- actual ) |
| \ Reads at most len bytes from the device into the memory buffer |
| \ beginning at adr. Returns actual, the number of bytes actually |
| \ read, or 0 if the read operation failed. Uses the parent's read- |
| \ blocks method as necessary to satisfy the request, buffering any |
| \ unused bytes for the next request. |
| |
| : read ( adr len -- actual ) |
| ; |
| |
| \ Writes at most len bytes from the device into the memory buffer |
| \ beginning at adr. Returns actual, the number of bytes actually |
| \ read, or 0 if the write operation failed. Uses the parent's write- |
| \ blocks method as necessary to satisfy the request, buffering any |
| \ unused bytes for the next request. |
| |
| : write ( adr len -- actual ) |
| ; |
| |
| \ Sets the device position at which the next read or write will take |
| \ place. The position is specified by the 64-bit number x.position. |
| \ Returns 0 if the operation succeeds or -1 if it fails. |
| |
| : seek ( x.position -- flag ) |
| ; |
| |
| finish-device |
| |
| \ clean up afterwards |
| device-end |