rwmc

package module
v0.0.0-...-4b3c754 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 28, 2017 License: MIT Imports: 2 Imported by: 5

README

rwmc

WriteMultiCloser and WriteMultiCloser wrappers to close multiple Closers at once.

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)

func (*ReadMultiCloser) Read

func (r *ReadMultiCloser) Read(p []byte) (n int, err error)

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.

func (*WriteMultiCloser) Write

func (w *WriteMultiCloser) Write(p []byte) (n int, err error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL