mirror of
https://github.com/hanzozt/zt.git
synced 2026-11-02 11:38:22 +00:00
38 lines
515 B
Go
38 lines
515 B
Go
package xgress
|
|
|
|
import (
|
|
"io"
|
|
"sync"
|
|
)
|
|
|
|
type CloseHelper struct {
|
|
closer io.Closer
|
|
closeLock sync.Mutex
|
|
}
|
|
|
|
func (self *CloseHelper) Init(closer io.Closer) {
|
|
if self == nil {
|
|
return
|
|
}
|
|
|
|
self.closeLock.Lock()
|
|
defer self.closeLock.Unlock()
|
|
self.closer = closer
|
|
}
|
|
|
|
func (self *CloseHelper) Close() error {
|
|
if self == nil {
|
|
return nil
|
|
}
|
|
|
|
self.closeLock.Lock()
|
|
defer self.closeLock.Unlock()
|
|
|
|
if self.closer != nil {
|
|
result := self.closer.Close()
|
|
self.closer = nil
|
|
return result
|
|
}
|
|
return nil
|
|
}
|