github.com/insolar/vanilla@v0.0.0-20201023172447-248fdf805322/iokit/writerto.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 _ io.Writer = WriterFunc(nil)
    11  
    12  type WriterFunc func([]byte) (int, error)
    13  
    14  func (v WriterFunc) Write(b []byte) (int, error) {
    15  	if v == nil {
    16  		return 0, nil
    17  	}
    18  	return v(b)
    19  }
    20  
    21  var _ io.Reader = ReaderFunc(nil)
    22  
    23  type ReaderFunc func([]byte) (int, error)
    24  
    25  func (v ReaderFunc) Read(b []byte) (int, error) {
    26  	if v == nil {
    27  		return 0, nil
    28  	}
    29  	return v(b)
    30  }
    31  
    32  var _ io.WriterTo = WriterToFunc(nil)
    33  
    34  type WriterToFunc func(io.Writer) (int64, error)
    35  
    36  func (v WriterToFunc) WriteTo(w io.Writer) (int64, error) {
    37  	if v == nil {
    38  		return 0, nil
    39  	}
    40  	return v(w)
    41  }