Add Cycler
This commit is contained in:
parent
9655da5841
commit
d274e91941
28
io/cycler.go
Normal file
28
io/cycler.go
Normal file
@ -0,0 +1,28 @@
|
||||
package uio
|
||||
|
||||
import "io"
|
||||
|
||||
// Cycler stores any io.Closer. When the value is replaced, the old value is
|
||||
// closed.
|
||||
type Cycler struct {
|
||||
value io.Closer
|
||||
}
|
||||
|
||||
// Value returns the value of the Cycler. If there is no value, nil is returned.
|
||||
func (this *Cycler) Value () io.Closer {
|
||||
return this.value
|
||||
}
|
||||
|
||||
// Set replaces the value of the Cycler, closing the previous one if it exists.
|
||||
func (this *Cycler) Set (value io.Closer) error {
|
||||
err := this.value.Close()
|
||||
this.value = value
|
||||
return err
|
||||
}
|
||||
|
||||
// Close closes the Cycler's value early. It will be set to nil.
|
||||
func (this *Cycler) Close () error {
|
||||
return this.Set(nil)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user