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