initial commit
This commit is contained in:
50
utils/io.go
Normal file
50
utils/io.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"io"
|
||||
"sync"
|
||||
)
|
||||
|
||||
var (
|
||||
blockSize = 32
|
||||
)
|
||||
|
||||
var (
|
||||
ErrNoBuf = errors.New("no buffer can be used")
|
||||
|
||||
pool = sync.Pool{
|
||||
New: func() interface{} {
|
||||
return make([]byte, blockSize*1024)
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func getBuffer() []byte {
|
||||
if buffer, ok := pool.Get().([]byte); ok {
|
||||
return buffer
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func putBuffer(buffer []byte) {
|
||||
pool.Put(buffer)
|
||||
}
|
||||
|
||||
func Copy(dst io.Writer, src io.Reader) (int64, error) {
|
||||
if wt, ok := src.(io.WriterTo); ok {
|
||||
return wt.WriteTo(dst)
|
||||
}
|
||||
|
||||
if rt, ok := dst.(io.ReaderFrom); ok {
|
||||
return rt.ReadFrom(src)
|
||||
}
|
||||
|
||||
if buffer := getBuffer(); nil != buffer {
|
||||
defer putBuffer(buffer)
|
||||
|
||||
return io.CopyBuffer(dst, src, buffer)
|
||||
}
|
||||
|
||||
return 0, ErrNoBuf
|
||||
}
|
||||
8
utils/utils.go
Normal file
8
utils/utils.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package utils
|
||||
|
||||
func BoolToInt(b bool) int {
|
||||
if b {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}
|
||||
Reference in New Issue
Block a user