package zioutil import ( "fmt" "io" ) type ReadWriterBind struct { Reader io.Reader Writer io.Writer } func (rwb ReadWriterBind) Read(b []byte) (n int, err error) { return rwb.Reader.Read(b) } func (rwb ReadWriterBind) Write(b []byte) (n int, err error) { return rwb.Writer.Write(b) } type ReadWriteCloserBind struct { ReadCloser io.ReadCloser WriteCloser io.WriteCloser } func (rwb ReadWriteCloserBind) Read(b []byte) (n int, err error) { return rwb.ReadCloser.Read(b) } func (rwb ReadWriteCloserBind) Write(b []byte) (n int, err error) { return rwb.WriteCloser.Write(b) } func (rwb ReadWriteCloserBind) Close() error { e1 := rwb.ReadCloser.Close() e2 := rwb.WriteCloser.Close() if e1 != nil { return e1 } if e2 != nil { return e2 } return nil } type Reader2ReadCloser struct { Reader io.Reader } func (rcb Reader2ReadCloser) Read(b []byte) (n int, err error) { return rcb.Reader.Read(b) } func (rcb Reader2ReadCloser) Close() error { return nil } type Writer2ReadCloser struct { Writer io.Writer } func (wcb Writer2ReadCloser) Write(b []byte) (n int, err error) { return wcb.Writer.Write(b) } func (wcb Writer2ReadCloser) Close() error { return nil } type NullWriter struct { } func (nw NullWriter) Write(b []byte) (int, error) { return len(b), nil } type NullReader struct { } func (nw NullReader) Read(b []byte) (int, error) { return 0, fmt.Errorf("null reader") }