Documentation ¶
Index ¶
- Constants
- func ChanFile(inp ...*zip.File) chan *zip.File
- func ChanFileFuncErr(act func() (*zip.File, error)) <-chan *zip.File
- func ChanFileFuncNil(act func() *zip.File) <-chan *zip.File
- func ChanFileFuncNok(act func() (*zip.File, bool)) <-chan *zip.File
- func ChanFileHeader(inp ...*zip.FileHeader) chan *zip.FileHeader
- func ChanFileHeaderFuncErr(act func() (*zip.FileHeader, error)) <-chan *zip.FileHeader
- func ChanFileHeaderFuncNil(act func() *zip.FileHeader) <-chan *zip.FileHeader
- func ChanFileHeaderFuncNok(act func() (*zip.FileHeader, bool)) <-chan *zip.FileHeader
- func ChanFileHeaderSlice(inp ...[]*zip.FileHeader) chan *zip.FileHeader
- func ChanFileSlice(inp ...[]*zip.File) chan *zip.File
- func ChanReadCloser(inp ...*zip.ReadCloser) chan *zip.ReadCloser
- func ChanReadCloserFuncErr(act func() (*zip.ReadCloser, error)) <-chan *zip.ReadCloser
- func ChanReadCloserFuncNil(act func() *zip.ReadCloser) <-chan *zip.ReadCloser
- func ChanReadCloserFuncNok(act func() (*zip.ReadCloser, bool)) <-chan *zip.ReadCloser
- func ChanReadCloserSlice(inp ...[]*zip.ReadCloser) chan *zip.ReadCloser
- func ChanReader(inp ...*zip.Reader) chan *zip.Reader
- func ChanReaderFuncErr(act func() (*zip.Reader, error)) <-chan *zip.Reader
- func ChanReaderFuncNil(act func() *zip.Reader) <-chan *zip.Reader
- func ChanReaderFuncNok(act func() (*zip.Reader, bool)) <-chan *zip.Reader
- func ChanReaderSlice(inp ...[]*zip.Reader) chan *zip.Reader
- func ChanWriter(inp ...*zip.Writer) chan *zip.Writer
- func ChanWriterFuncErr(act func() (*zip.Writer, error)) <-chan *zip.Writer
- func ChanWriterFuncNil(act func() *zip.Writer) <-chan *zip.Writer
- func ChanWriterFuncNok(act func() (*zip.Writer, bool)) <-chan *zip.Writer
- func ChanWriterSlice(inp ...[]*zip.Writer) chan *zip.Writer
- func DoneFile(inp <-chan *zip.File) chan struct{}
- func DoneFileFunc(inp <-chan *zip.File, act func(a *zip.File)) chan struct{}
- func DoneFileHeader(inp <-chan *zip.FileHeader) chan struct{}
- func DoneFileHeaderFunc(inp <-chan *zip.FileHeader, act func(a *zip.FileHeader)) chan struct{}
- func DoneFileHeaderSlice(inp <-chan *zip.FileHeader) chan []*zip.FileHeader
- func DoneFileSlice(inp <-chan *zip.File) chan []*zip.File
- func DoneReadCloser(inp <-chan *zip.ReadCloser) chan struct{}
- func DoneReadCloserFunc(inp <-chan *zip.ReadCloser, act func(a *zip.ReadCloser)) chan struct{}
- func DoneReadCloserSlice(inp <-chan *zip.ReadCloser) chan []*zip.ReadCloser
- func DoneReader(inp <-chan *zip.Reader) chan struct{}
- func DoneReaderFunc(inp <-chan *zip.Reader, act func(a *zip.Reader)) chan struct{}
- func DoneReaderSlice(inp <-chan *zip.Reader) chan []*zip.Reader
- func DoneWriter(inp <-chan *zip.Writer) chan struct{}
- func DoneWriterFunc(inp <-chan *zip.Writer, act func(a *zip.Writer)) chan struct{}
- func DoneWriterSlice(inp <-chan *zip.Writer) chan []*zip.Writer
- func FileDaisy(inp <-chan *zip.File, tube FileTube) (out <-chan *zip.File)
- func FileDaisyChain(inp <-chan *zip.File, tubes ...FileTube) (out <-chan *zip.File)
- func FileHeaderDaisy(inp <-chan *zip.FileHeader, tube FileHeaderTube) (out <-chan *zip.FileHeader)
- func FileHeaderDaisyChain(inp <-chan *zip.FileHeader, tubes ...FileHeaderTube) (out <-chan *zip.FileHeader)
- func JoinFile(out chan<- *zip.File, inp ...*zip.File) chan struct{}
- func JoinFileChan(out chan<- *zip.File, inp <-chan *zip.File) chan struct{}
- func JoinFileHeader(out chan<- *zip.FileHeader, inp ...*zip.FileHeader) chan struct{}
- func JoinFileHeaderChan(out chan<- *zip.FileHeader, inp <-chan *zip.FileHeader) chan struct{}
- func JoinFileHeaderSlice(out chan<- *zip.FileHeader, inp ...[]*zip.FileHeader) chan struct{}
- func JoinFileSlice(out chan<- *zip.File, inp ...[]*zip.File) chan struct{}
- func JoinReadCloser(out chan<- *zip.ReadCloser, inp ...*zip.ReadCloser) chan struct{}
- func JoinReadCloserChan(out chan<- *zip.ReadCloser, inp <-chan *zip.ReadCloser) chan struct{}
- func JoinReadCloserSlice(out chan<- *zip.ReadCloser, inp ...[]*zip.ReadCloser) chan struct{}
- func JoinReader(out chan<- *zip.Reader, inp ...*zip.Reader) chan struct{}
- func JoinReaderChan(out chan<- *zip.Reader, inp <-chan *zip.Reader) chan struct{}
- func JoinReaderSlice(out chan<- *zip.Reader, inp ...[]*zip.Reader) chan struct{}
- func JoinWriter(out chan<- *zip.Writer, inp ...*zip.Writer) chan struct{}
- func JoinWriterChan(out chan<- *zip.Writer, inp <-chan *zip.Writer) chan struct{}
- func JoinWriterSlice(out chan<- *zip.Writer, inp ...[]*zip.Writer) chan struct{}
- func MakeFileChan() chan *zip.File
- func MakeFileHeaderChan() chan *zip.FileHeader
- func MakeReadCloserChan() chan *zip.ReadCloser
- func MakeReaderChan() chan *zip.Reader
- func MakeWriterChan() chan *zip.Writer
- func PipeFileBuffer(inp <-chan *zip.File, cap int) chan *zip.File
- func PipeFileFork(inp <-chan *zip.File) (chan *zip.File, chan *zip.File)
- func PipeFileFunc(inp <-chan *zip.File, act func(a *zip.File) *zip.File) chan *zip.File
- func PipeFileHeaderBuffer(inp <-chan *zip.FileHeader, cap int) chan *zip.FileHeader
- func PipeFileHeaderFork(inp <-chan *zip.FileHeader) (chan *zip.FileHeader, chan *zip.FileHeader)
- func PipeFileHeaderFunc(inp <-chan *zip.FileHeader, act func(a *zip.FileHeader) *zip.FileHeader) chan *zip.FileHeader
- func PipeReadCloserBuffer(inp <-chan *zip.ReadCloser, cap int) chan *zip.ReadCloser
- func PipeReadCloserFork(inp <-chan *zip.ReadCloser) (chan *zip.ReadCloser, chan *zip.ReadCloser)
- func PipeReadCloserFunc(inp <-chan *zip.ReadCloser, act func(a *zip.ReadCloser) *zip.ReadCloser) chan *zip.ReadCloser
- func PipeReaderBuffer(inp <-chan *zip.Reader, cap int) chan *zip.Reader
- func PipeReaderFork(inp <-chan *zip.Reader) (chan *zip.Reader, chan *zip.Reader)
- func PipeReaderFunc(inp <-chan *zip.Reader, act func(a *zip.Reader) *zip.Reader) chan *zip.Reader
- func PipeWriterBuffer(inp <-chan *zip.Writer, cap int) chan *zip.Writer
- func PipeWriterFork(inp <-chan *zip.Writer) (chan *zip.Writer, chan *zip.Writer)
- func PipeWriterFunc(inp <-chan *zip.Writer, act func(a *zip.Writer) *zip.Writer) chan *zip.Writer
- func ReadCloserDaisy(inp <-chan *zip.ReadCloser, tube ReadCloserTube) (out <-chan *zip.ReadCloser)
- func ReadCloserDaisyChain(inp <-chan *zip.ReadCloser, tubes ...ReadCloserTube) (out <-chan *zip.ReadCloser)
- func ReaderDaisy(inp <-chan *zip.Reader, tube ReaderTube) (out <-chan *zip.Reader)
- func ReaderDaisyChain(inp <-chan *zip.Reader, tubes ...ReaderTube) (out <-chan *zip.Reader)
- func SendProxyFile(out chan<- *zip.File) chan<- *zip.File
- func SendProxyFileHeader(out chan<- *zip.FileHeader) chan<- *zip.FileHeader
- func SendProxyReadCloser(out chan<- *zip.ReadCloser) chan<- *zip.ReadCloser
- func SendProxyReader(out chan<- *zip.Reader) chan<- *zip.Reader
- func SendProxyWriter(out chan<- *zip.Writer) chan<- *zip.Writer
- func WriterDaisy(inp <-chan *zip.Writer, tube WriterTube) (out <-chan *zip.Writer)
- func WriterDaisyChain(inp <-chan *zip.Writer, tubes ...WriterTube) (out <-chan *zip.Writer)
- type FileHeaderTube
- type FileTube
- type ReadCloserTube
- type ReaderTube
- type WriterTube
Constants ¶
const FileCAP = 10
FileCAP is the capacity of the buffered proxy channel
const FileHeaderCAP = 10
FileHeaderCAP is the capacity of the buffered proxy channel
const FileHeaderQUE = 16
FileHeaderQUE is the allocated size of the circular queue
const FileQUE = 16
FileQUE is the allocated size of the circular queue
const ReadCloserCAP = 10
ReadCloserCAP is the capacity of the buffered proxy channel
const ReadCloserQUE = 16
ReadCloserQUE is the allocated size of the circular queue
const ReaderCAP = 10
ReaderCAP is the capacity of the buffered proxy channel
const ReaderQUE = 16
ReaderQUE is the allocated size of the circular queue
const WriterCAP = 10
WriterCAP is the capacity of the buffered proxy channel
const WriterQUE = 16
WriterQUE is the allocated size of the circular queue
Variables ¶
This section is empty.
Functions ¶
func ChanFileFuncErr ¶
ChanFileFuncErr returns a channel to receive all results of act until err != nil before close.
func ChanFileFuncNil ¶
ChanFileFuncNil returns a channel to receive all results of act until nil before close.
func ChanFileFuncNok ¶
ChanFileFuncNok returns a channel to receive all results of act until nok before close.
func ChanFileHeader ¶
func ChanFileHeader(inp ...*zip.FileHeader) chan *zip.FileHeader
ChanFileHeader returns a channel to receive all inputs before close.
func ChanFileHeaderFuncErr ¶
func ChanFileHeaderFuncErr(act func() (*zip.FileHeader, error)) <-chan *zip.FileHeader
ChanFileHeaderFuncErr returns a channel to receive all results of act until err != nil before close.
func ChanFileHeaderFuncNil ¶
func ChanFileHeaderFuncNil(act func() *zip.FileHeader) <-chan *zip.FileHeader
ChanFileHeaderFuncNil returns a channel to receive all results of act until nil before close.
func ChanFileHeaderFuncNok ¶
func ChanFileHeaderFuncNok(act func() (*zip.FileHeader, bool)) <-chan *zip.FileHeader
ChanFileHeaderFuncNok returns a channel to receive all results of act until nok before close.
func ChanFileHeaderSlice ¶
func ChanFileHeaderSlice(inp ...[]*zip.FileHeader) chan *zip.FileHeader
ChanFileHeaderSlice returns a channel to receive all inputs before close.
func ChanFileSlice ¶
ChanFileSlice returns a channel to receive all inputs before close.
func ChanReadCloser ¶
func ChanReadCloser(inp ...*zip.ReadCloser) chan *zip.ReadCloser
ChanReadCloser returns a channel to receive all inputs before close.
func ChanReadCloserFuncErr ¶
func ChanReadCloserFuncErr(act func() (*zip.ReadCloser, error)) <-chan *zip.ReadCloser
ChanReadCloserFuncErr returns a channel to receive all results of act until err != nil before close.
func ChanReadCloserFuncNil ¶
func ChanReadCloserFuncNil(act func() *zip.ReadCloser) <-chan *zip.ReadCloser
ChanReadCloserFuncNil returns a channel to receive all results of act until nil before close.
func ChanReadCloserFuncNok ¶
func ChanReadCloserFuncNok(act func() (*zip.ReadCloser, bool)) <-chan *zip.ReadCloser
ChanReadCloserFuncNok returns a channel to receive all results of act until nok before close.
func ChanReadCloserSlice ¶
func ChanReadCloserSlice(inp ...[]*zip.ReadCloser) chan *zip.ReadCloser
ChanReadCloserSlice returns a channel to receive all inputs before close.
func ChanReader ¶
ChanReader returns a channel to receive all inputs before close.
func ChanReaderFuncErr ¶
ChanReaderFuncErr returns a channel to receive all results of act until err != nil before close.
func ChanReaderFuncNil ¶
ChanReaderFuncNil returns a channel to receive all results of act until nil before close.
func ChanReaderFuncNok ¶
ChanReaderFuncNok returns a channel to receive all results of act until nok before close.
func ChanReaderSlice ¶
ChanReaderSlice returns a channel to receive all inputs before close.
func ChanWriter ¶
ChanWriter returns a channel to receive all inputs before close.
func ChanWriterFuncErr ¶
ChanWriterFuncErr returns a channel to receive all results of act until err != nil before close.
func ChanWriterFuncNil ¶
ChanWriterFuncNil returns a channel to receive all results of act until nil before close.
func ChanWriterFuncNok ¶
ChanWriterFuncNok returns a channel to receive all results of act until nok before close.
func ChanWriterSlice ¶
ChanWriterSlice returns a channel to receive all inputs before close.
func DoneFile ¶
DoneFile returns a channel to receive one signal before close after inp has been drained.
func DoneFileFunc ¶
DoneFileFunc returns a channel to receive one signal before close after act has been applied to all inp.
func DoneFileHeader ¶
func DoneFileHeader(inp <-chan *zip.FileHeader) chan struct{}
DoneFileHeader returns a channel to receive one signal before close after inp has been drained.
func DoneFileHeaderFunc ¶
func DoneFileHeaderFunc(inp <-chan *zip.FileHeader, act func(a *zip.FileHeader)) chan struct{}
DoneFileHeaderFunc returns a channel to receive one signal before close after act has been applied to all inp.
func DoneFileHeaderSlice ¶
func DoneFileHeaderSlice(inp <-chan *zip.FileHeader) chan []*zip.FileHeader
DoneFileHeaderSlice returns a channel which will receive a slice of all the FileHeaders received on inp channel before close. Unlike DoneFileHeader, a full slice is sent once, not just an event.
func DoneFileSlice ¶
DoneFileSlice returns a channel which will receive a slice of all the Files received on inp channel before close. Unlike DoneFile, a full slice is sent once, not just an event.
func DoneReadCloser ¶
func DoneReadCloser(inp <-chan *zip.ReadCloser) chan struct{}
DoneReadCloser returns a channel to receive one signal before close after inp has been drained.
func DoneReadCloserFunc ¶
func DoneReadCloserFunc(inp <-chan *zip.ReadCloser, act func(a *zip.ReadCloser)) chan struct{}
DoneReadCloserFunc returns a channel to receive one signal before close after act has been applied to all inp.
func DoneReadCloserSlice ¶
func DoneReadCloserSlice(inp <-chan *zip.ReadCloser) chan []*zip.ReadCloser
DoneReadCloserSlice returns a channel which will receive a slice of all the ReadClosers received on inp channel before close. Unlike DoneReadCloser, a full slice is sent once, not just an event.
func DoneReader ¶
DoneReader returns a channel to receive one signal before close after inp has been drained.
func DoneReaderFunc ¶
DoneReaderFunc returns a channel to receive one signal before close after act has been applied to all inp.
func DoneReaderSlice ¶
DoneReaderSlice returns a channel which will receive a slice of all the Readers received on inp channel before close. Unlike DoneReader, a full slice is sent once, not just an event.
func DoneWriter ¶
DoneWriter returns a channel to receive one signal before close after inp has been drained.
func DoneWriterFunc ¶
DoneWriterFunc returns a channel to receive one signal before close after act has been applied to all inp.
func DoneWriterSlice ¶
DoneWriterSlice returns a channel which will receive a slice of all the Writers received on inp channel before close. Unlike DoneWriter, a full slice is sent once, not just an event.
func FileDaisyChain ¶
FileDaisyChain returns a channel to receive all inp after having passed thru all tubes.
func FileHeaderDaisy ¶
func FileHeaderDaisy(inp <-chan *zip.FileHeader, tube FileHeaderTube) (out <-chan *zip.FileHeader)
FileHeaderDaisy returns a channel to receive all inp after having passed thru tube.
func FileHeaderDaisyChain ¶
func FileHeaderDaisyChain(inp <-chan *zip.FileHeader, tubes ...FileHeaderTube) (out <-chan *zip.FileHeader)
FileHeaderDaisyChain returns a channel to receive all inp after having passed thru all tubes.
func JoinFile ¶
JoinFile sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinFileChan ¶
JoinFileChan sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinFileHeader ¶
func JoinFileHeader(out chan<- *zip.FileHeader, inp ...*zip.FileHeader) chan struct{}
JoinFileHeader sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinFileHeaderChan ¶
func JoinFileHeaderChan(out chan<- *zip.FileHeader, inp <-chan *zip.FileHeader) chan struct{}
JoinFileHeaderChan sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinFileHeaderSlice ¶
func JoinFileHeaderSlice(out chan<- *zip.FileHeader, inp ...[]*zip.FileHeader) chan struct{}
JoinFileHeaderSlice sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinFileSlice ¶
JoinFileSlice sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinReadCloser ¶
func JoinReadCloser(out chan<- *zip.ReadCloser, inp ...*zip.ReadCloser) chan struct{}
JoinReadCloser sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinReadCloserChan ¶
func JoinReadCloserChan(out chan<- *zip.ReadCloser, inp <-chan *zip.ReadCloser) chan struct{}
JoinReadCloserChan sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinReadCloserSlice ¶
func JoinReadCloserSlice(out chan<- *zip.ReadCloser, inp ...[]*zip.ReadCloser) chan struct{}
JoinReadCloserSlice sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinReader ¶
JoinReader sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinReaderChan ¶
JoinReaderChan sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinReaderSlice ¶
JoinReaderSlice sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinWriter ¶
JoinWriter sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinWriterChan ¶
JoinWriterChan sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func JoinWriterSlice ¶
JoinWriterSlice sends inputs on the given out channel and returns a done channel to receive one signal when inp has been drained
func MakeFileChan ¶
MakeFileChan returns a new open channel (simply a 'chan *zip.File' that is).
Note: No 'File-producer' is launched here yet! (as is in all the other functions).
This is useful to easily create corresponding variables such as
var myFilePipelineStartsHere := MakeFileChan() // ... lot's of code to design and build Your favourite "myFileWorkflowPipeline" // ... // ... *before* You start pouring data into it, e.g. simply via: for drop := range water { myFilePipelineStartsHere <- drop } close(myFilePipelineStartsHere)
Hint: especially helpful, if Your piping library operates on some hidden (non-exported) type (or on a type imported from elsewhere - and You don't want/need or should(!) have to care.)
Note: as always (except for PipeFileBuffer) the channel is unbuffered.
func MakeFileHeaderChan ¶
func MakeFileHeaderChan() chan *zip.FileHeader
MakeFileHeaderChan returns a new open channel (simply a 'chan *zip.FileHeader' that is).
Note: No 'FileHeader-producer' is launched here yet! (as is in all the other functions).
This is useful to easily create corresponding variables such as
var myFileHeaderPipelineStartsHere := MakeFileHeaderChan() // ... lot's of code to design and build Your favourite "myFileHeaderWorkflowPipeline" // ... // ... *before* You start pouring data into it, e.g. simply via: for drop := range water { myFileHeaderPipelineStartsHere <- drop } close(myFileHeaderPipelineStartsHere)
Hint: especially helpful, if Your piping library operates on some hidden (non-exported) type (or on a type imported from elsewhere - and You don't want/need or should(!) have to care.)
Note: as always (except for PipeFileHeaderBuffer) the channel is unbuffered.
func MakeReadCloserChan ¶
func MakeReadCloserChan() chan *zip.ReadCloser
MakeReadCloserChan returns a new open channel (simply a 'chan *zip.ReadCloser' that is).
Note: No 'ReadCloser-producer' is launched here yet! (as is in all the other functions).
This is useful to easily create corresponding variables such as
var myReadCloserPipelineStartsHere := MakeReadCloserChan() // ... lot's of code to design and build Your favourite "myReadCloserWorkflowPipeline" // ... // ... *before* You start pouring data into it, e.g. simply via: for drop := range water { myReadCloserPipelineStartsHere <- drop } close(myReadCloserPipelineStartsHere)
Hint: especially helpful, if Your piping library operates on some hidden (non-exported) type (or on a type imported from elsewhere - and You don't want/need or should(!) have to care.)
Note: as always (except for PipeReadCloserBuffer) the channel is unbuffered.
func MakeReaderChan ¶
MakeReaderChan returns a new open channel (simply a 'chan *zip.Reader' that is).
Note: No 'Reader-producer' is launched here yet! (as is in all the other functions).
This is useful to easily create corresponding variables such as
var myReaderPipelineStartsHere := MakeReaderChan() // ... lot's of code to design and build Your favourite "myReaderWorkflowPipeline" // ... // ... *before* You start pouring data into it, e.g. simply via: for drop := range water { myReaderPipelineStartsHere <- drop } close(myReaderPipelineStartsHere)
Hint: especially helpful, if Your piping library operates on some hidden (non-exported) type (or on a type imported from elsewhere - and You don't want/need or should(!) have to care.)
Note: as always (except for PipeReaderBuffer) the channel is unbuffered.
func MakeWriterChan ¶
MakeWriterChan returns a new open channel (simply a 'chan *zip.Writer' that is).
Note: No 'Writer-producer' is launched here yet! (as is in all the other functions).
This is useful to easily create corresponding variables such as
var myWriterPipelineStartsHere := MakeWriterChan() // ... lot's of code to design and build Your favourite "myWriterWorkflowPipeline" // ... // ... *before* You start pouring data into it, e.g. simply via: for drop := range water { myWriterPipelineStartsHere <- drop } close(myWriterPipelineStartsHere)
Hint: especially helpful, if Your piping library operates on some hidden (non-exported) type (or on a type imported from elsewhere - and You don't want/need or should(!) have to care.)
Note: as always (except for PipeWriterBuffer) the channel is unbuffered.
func PipeFileBuffer ¶
PipeFileBuffer returns a buffered channel with capacity cap to receive all inp before close.
func PipeFileFork ¶
PipeFileFork returns two channels to receive every result of inp before close.
Note: Yes, it is a VERY simple fanout - but sometimes all You need.
func PipeFileFunc ¶
PipeFileFunc returns a channel to receive every result of act applied to inp before close. Note: it 'could' be PipeFileMap for functional people, but 'map' has a very different meaning in go lang.
func PipeFileHeaderBuffer ¶
func PipeFileHeaderBuffer(inp <-chan *zip.FileHeader, cap int) chan *zip.FileHeader
PipeFileHeaderBuffer returns a buffered channel with capacity cap to receive all inp before close.
func PipeFileHeaderFork ¶
func PipeFileHeaderFork(inp <-chan *zip.FileHeader) (chan *zip.FileHeader, chan *zip.FileHeader)
PipeFileHeaderFork returns two channels to receive every result of inp before close.
Note: Yes, it is a VERY simple fanout - but sometimes all You need.
func PipeFileHeaderFunc ¶
func PipeFileHeaderFunc(inp <-chan *zip.FileHeader, act func(a *zip.FileHeader) *zip.FileHeader) chan *zip.FileHeader
PipeFileHeaderFunc returns a channel to receive every result of act applied to inp before close. Note: it 'could' be PipeFileHeaderMap for functional people, but 'map' has a very different meaning in go lang.
func PipeReadCloserBuffer ¶
func PipeReadCloserBuffer(inp <-chan *zip.ReadCloser, cap int) chan *zip.ReadCloser
PipeReadCloserBuffer returns a buffered channel with capacity cap to receive all inp before close.
func PipeReadCloserFork ¶
func PipeReadCloserFork(inp <-chan *zip.ReadCloser) (chan *zip.ReadCloser, chan *zip.ReadCloser)
PipeReadCloserFork returns two channels to receive every result of inp before close.
Note: Yes, it is a VERY simple fanout - but sometimes all You need.
func PipeReadCloserFunc ¶
func PipeReadCloserFunc(inp <-chan *zip.ReadCloser, act func(a *zip.ReadCloser) *zip.ReadCloser) chan *zip.ReadCloser
PipeReadCloserFunc returns a channel to receive every result of act applied to inp before close. Note: it 'could' be PipeReadCloserMap for functional people, but 'map' has a very different meaning in go lang.
func PipeReaderBuffer ¶
PipeReaderBuffer returns a buffered channel with capacity cap to receive all inp before close.
func PipeReaderFork ¶
PipeReaderFork returns two channels to receive every result of inp before close.
Note: Yes, it is a VERY simple fanout - but sometimes all You need.
func PipeReaderFunc ¶
PipeReaderFunc returns a channel to receive every result of act applied to inp before close. Note: it 'could' be PipeReaderMap for functional people, but 'map' has a very different meaning in go lang.
func PipeWriterBuffer ¶
PipeWriterBuffer returns a buffered channel with capacity cap to receive all inp before close.
func PipeWriterFork ¶
PipeWriterFork returns two channels to receive every result of inp before close.
Note: Yes, it is a VERY simple fanout - but sometimes all You need.
func PipeWriterFunc ¶
PipeWriterFunc returns a channel to receive every result of act applied to inp before close. Note: it 'could' be PipeWriterMap for functional people, but 'map' has a very different meaning in go lang.
func ReadCloserDaisy ¶
func ReadCloserDaisy(inp <-chan *zip.ReadCloser, tube ReadCloserTube) (out <-chan *zip.ReadCloser)
ReadCloserDaisy returns a channel to receive all inp after having passed thru tube.
func ReadCloserDaisyChain ¶
func ReadCloserDaisyChain(inp <-chan *zip.ReadCloser, tubes ...ReadCloserTube) (out <-chan *zip.ReadCloser)
ReadCloserDaisyChain returns a channel to receive all inp after having passed thru all tubes.
func ReaderDaisy ¶
func ReaderDaisy(inp <-chan *zip.Reader, tube ReaderTube) (out <-chan *zip.Reader)
ReaderDaisy returns a channel to receive all inp after having passed thru tube.
func ReaderDaisyChain ¶
func ReaderDaisyChain(inp <-chan *zip.Reader, tubes ...ReaderTube) (out <-chan *zip.Reader)
ReaderDaisyChain returns a channel to receive all inp after having passed thru all tubes.
func SendProxyFile ¶
SendProxyFile returns a channel to serve as a sending proxy to 'out'. Uses a goroutine to receive values from 'out' and store them in an expanding buffer, so that sending to 'out' never blocks.
Note: the expanding buffer is implemented via "container/ring"
func SendProxyFileHeader ¶
func SendProxyFileHeader(out chan<- *zip.FileHeader) chan<- *zip.FileHeader
SendProxyFileHeader returns a channel to serve as a sending proxy to 'out'. Uses a goroutine to receive values from 'out' and store them in an expanding buffer, so that sending to 'out' never blocks.
Note: the expanding buffer is implemented via "container/ring"
func SendProxyReadCloser ¶
func SendProxyReadCloser(out chan<- *zip.ReadCloser) chan<- *zip.ReadCloser
SendProxyReadCloser returns a channel to serve as a sending proxy to 'out'. Uses a goroutine to receive values from 'out' and store them in an expanding buffer, so that sending to 'out' never blocks.
Note: the expanding buffer is implemented via "container/ring"
func SendProxyReader ¶
SendProxyReader returns a channel to serve as a sending proxy to 'out'. Uses a goroutine to receive values from 'out' and store them in an expanding buffer, so that sending to 'out' never blocks.
Note: the expanding buffer is implemented via "container/ring"
func SendProxyWriter ¶
SendProxyWriter returns a channel to serve as a sending proxy to 'out'. Uses a goroutine to receive values from 'out' and store them in an expanding buffer, so that sending to 'out' never blocks.
Note: the expanding buffer is implemented via "container/ring"
func WriterDaisy ¶
func WriterDaisy(inp <-chan *zip.Writer, tube WriterTube) (out <-chan *zip.Writer)
WriterDaisy returns a channel to receive all inp after having passed thru tube.
func WriterDaisyChain ¶
func WriterDaisyChain(inp <-chan *zip.Writer, tubes ...WriterTube) (out <-chan *zip.Writer)
WriterDaisyChain returns a channel to receive all inp after having passed thru all tubes.
Types ¶
type FileHeaderTube ¶
type FileHeaderTube func(inp <-chan *zip.FileHeader, out <-chan *zip.FileHeader)
FileHeaderTube is the signature for a pipe function.
type ReadCloserTube ¶
type ReadCloserTube func(inp <-chan *zip.ReadCloser, out <-chan *zip.ReadCloser)
ReadCloserTube is the signature for a pipe function.
type ReaderTube ¶
ReaderTube is the signature for a pipe function.