Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ReadMultiCloser ¶
type ReadMultiCloser struct {
// contains filtered or unexported fields
}
ReadMultiCloser is a wrapper fulfilling io.ReadCloser. It's use case is when you need to close multiple Closers when a main Reader is done with reading.
func NewReadMultiCloser ¶
func NewReadMultiCloser(reader io.ReadCloser, closers ...io.Closer) *ReadMultiCloser
NewReadMultiCloser creates a new ReadMultiCloser. Passed arguments form a queue [reader, closers...].
Usually the code looks similar to:
r0,_ := os.Open("") r1 := unpack1.Open(r0) r2 := unpack2.Open(r1) r := NewMultiCloser(r2, r1, r0)
Notice, similar thing can be achieved through:
ioutils.NewWriteCloserWrapper(r, func() error { r2.Close() r1.Close() return r0.Close() })
func (*ReadMultiCloser) Close ¶
func (r *ReadMultiCloser) Close() error
Close closes all closers starting from the last pushed.
func (*ReadMultiCloser) Push ¶
func (r *ReadMultiCloser) Push(wc io.ReadCloser)
type WriteMultiCloser ¶
type WriteMultiCloser struct {
// contains filtered or unexported fields
}
WriteMultiCloser is a wrapper fulfilling io.WriteCloser. It's use case is when you need to close multiple Closers when a main Writer is done with reading.
func NewWriteMultiCloser ¶
func NewWriteMultiCloser(writer io.WriteCloser, closers ...io.Closer) *WriteMultiCloser
NewWriteMultiCloser creates a new WriteMultiCloser. Passed arguments form a queue [reader, closers...].
Usually the code looks similar to:
w0,_ := os.Create("") w1 := packer.New(w0) w2 := packer.Open(w1) w := NewMultiCloser(w2, w1, r0)
func (*WriteMultiCloser) Close ¶
func (w *WriteMultiCloser) Close() error
func (*WriteMultiCloser) Push ¶
func (w *WriteMultiCloser) Push(wc io.WriteCloser)
Push replaces the writer with and adds it to closers.