github.com/insolar/vanilla@v0.0.0-20201023172447-248fdf805322/iokit/errors.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 (
     9  	"io"
    10  
    11  	"github.com/insolar/vanilla/throw"
    12  )
    13  
    14  var _ io.ReadWriteCloser = ErrorWrapper{}
    15  var _ io.ReadWriteSeeker = ErrorWrapper{}
    16  var _ LenReader = ErrorWrapper{}
    17  
    18  func WrapError(err error) ErrorWrapper {
    19  	if err != nil {
    20  		panic(throw.IllegalValue())
    21  	}
    22  	return ErrorWrapper{err}
    23  }
    24  
    25  type ErrorWrapper struct {
    26  	err error
    27  }
    28  
    29  func (w ErrorWrapper) Error() error {
    30  	return w.err
    31  }
    32  
    33  func (w ErrorWrapper) Len() int {
    34  	return 1
    35  }
    36  
    37  func (w ErrorWrapper) Seek(offset int64, whence int) (int64, error) {
    38  	return 0, w.err
    39  }
    40  
    41  func (w ErrorWrapper) Read(p []byte) (n int, err error) {
    42  	return 0, w.err
    43  }
    44  
    45  func (w ErrorWrapper) Write(p []byte) (n int, err error) {
    46  	return 0, w.err
    47  }
    48  
    49  func (w ErrorWrapper) Close() error {
    50  	return w.err
    51  }