github.com/10XDev/rclone@v1.52.3-0.20200626220027-16af9ab76b2a/lib/readers/pattern_reader.go (about) 1 package readers 2 3 import "io" 4 5 // NewPatternReader creates a reader, that returns a deterministic byte pattern. 6 // After length bytes are read 7 func NewPatternReader(length int64) io.Reader { 8 return &patternReader{ 9 length: length, 10 } 11 } 12 13 type patternReader struct { 14 length int64 15 c byte 16 } 17 18 func (r *patternReader) Read(p []byte) (n int, err error) { 19 for i := range p { 20 if r.length <= 0 { 21 return n, io.EOF 22 } 23 p[i] = r.c 24 r.c = (r.c + 1) % 253 25 r.length-- 26 n++ 27 } 28 return 29 }