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 }