Skip to content

Commit

Permalink
doc: Document io packages a bit
Browse files Browse the repository at this point in the history
  • Loading branch information
wader committed Nov 21, 2021
1 parent 7c4b0b3 commit 1047d90
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 6 deletions.
22 changes: 22 additions & 0 deletions doc/dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,25 @@ main:main()
print tree
empty output
```

## bitio and other io packages

```
*os.File, *bytes.Buffer
^
ctxreadseeker.Reader defers blocking io operations to a goroutine to make them cancellable
^
progressreadseeker.Reader approximates how much of a file has been read
^
aheadreadseeker.Reader does readahead caching
^
| (io.ReadSeeker interface)
|
bitio.Reader (implements bitio.Bit* interfaces)
^
| (bitio.Bit* interfaces)
|
bitio.Buffer convenience wrapper to read bytes from bit reader, create section readers etc
SectionBitReader
MultiBitReader
```
10 changes: 5 additions & 5 deletions internal/progressreadseeker/progressreaderseeker.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (

type ProgressFn func(approxReadBytes int64, totalSize int64)

type ProgressReaderSeeker struct {
type Reader struct {
rs io.ReadSeeker
pos int64
totalSize int64
Expand All @@ -16,12 +16,12 @@ type ProgressReaderSeeker struct {
progressFn ProgressFn
}

func New(rs io.ReadSeeker, precision int64, totalSize int64, fn ProgressFn) *ProgressReaderSeeker {
func New(rs io.ReadSeeker, precision int64, totalSize int64, fn ProgressFn) *Reader {
partitionSize := totalSize / precision
if totalSize%precision != 0 {
partitionSize++
}
return &ProgressReaderSeeker{
return &Reader{
rs: rs,
totalSize: totalSize,
partitionSize: partitionSize,
Expand All @@ -30,7 +30,7 @@ func New(rs io.ReadSeeker, precision int64, totalSize int64, fn ProgressFn) *Pro
}
}

func (prs *ProgressReaderSeeker) Read(p []byte) (n int, err error) {
func (prs *Reader) Read(p []byte) (n int, err error) {
n, err = prs.rs.Read(p)
newPos := prs.pos + int64(n)
lastPartitionsReadCount := prs.partitionsReadCount
Expand Down Expand Up @@ -59,7 +59,7 @@ func (prs *ProgressReaderSeeker) Read(p []byte) (n int, err error) {
return n, err
}

func (prs *ProgressReaderSeeker) Seek(offset int64, whence int) (int64, error) {
func (prs *Reader) Seek(offset int64, whence int) (int64, error) {
pos, err := prs.rs.Seek(offset, whence)
prs.pos = pos
return pos, err
Expand Down
2 changes: 1 addition & 1 deletion pkg/interp/bufferrange.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ func (i *Interp) _open(c interface{}, a []interface{}) interface{} {
const cacheReadAheadSize = 512 * 1024
aheadRs := aheadreadseeker.New(fRS, cacheReadAheadSize)

// bitio.Buffer -> aheadreadseeker -> progressreadseeker -> ctxreadseeker -> readseeker
// bitio.Buffer -> (bitio.Reader) -> aheadreadseeker -> progressreadseeker -> ctxreadseeker -> readseeker

bbf.bb, err = bitio.NewBufferFromReadSeeker(aheadRs)
if err != nil {
Expand Down

0 comments on commit 1047d90

Please sign in to comment.