github.com/insolar/vanilla@v0.0.0-20201023172447-248fdf805322/iokit/zerobytes.go (about) 1 // Copyright 2020 Insolar Network Ltd. 2 // All rights reserved. 3 // This material is licensed under the Insolar License version 1.0, 4 // available at https://github.com/insolar/assured-ledger/blob/master/LICENSE.md. 5 6 package iokit 7 8 import "io" 9 10 var zeroBytes [1024]byte 11 12 func WriteZeros(x int, w io.Writer) (int, error) { 13 total := 0 14 for ; x > len(zeroBytes); x -= len(zeroBytes) { 15 n, err := w.Write(zeroBytes[:]) 16 total += n 17 if err != nil { 18 return total, err 19 } 20 } 21 22 n, err := w.Write(zeroBytes[:x]) 23 total += n 24 return total, err 25 } 26 27 var _ io.ReadWriter = NullReadWriter{} 28 var null = NullReadWriter{} 29 30 type NullReadWriter struct{} 31 32 func (p NullReadWriter) Read(b []byte) (int, error) { 33 for i := range b { 34 b[i] = 0 35 } 36 return len(b), nil 37 } 38 39 func (p NullReadWriter) Write(b []byte) (int, error) { 40 return len(b), nil 41 } 42 43 func Null() NullReadWriter { 44 return null 45 }