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