1 Star 0 Fork 0

ziEgate / common

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
buffer.go 1.26 KB
一键复制 编辑 原始数据 按行查看 历史
package common
import (
"bytes"
"encoding/binary"
"io"
"sync"
)
type Buffer struct {
buffer *bytes.Buffer
err error
}
func (b *Buffer) WriteLittle(target interface{}) {
b.err = binary.Write(b.buffer, binary.LittleEndian, target)
}
func (b *Buffer) WriteBig(target interface{}) {
b.err = binary.Write(b.buffer, binary.BigEndian, target)
}
func (b *Buffer) ReadBig(target interface{}) {
b.err = binary.Read(b.buffer, binary.BigEndian, target)
}
func (b *Buffer) ReadLittle(target interface{}) {
b.err = binary.Read(b.buffer, binary.LittleEndian, target)
}
func (b *Buffer) Reset() {
b.buffer.Reset()
}
func (b *Buffer) Error() error {
if b.err == io.EOF {
return nil
}
return b.err
}
func (b Buffer) Bytes() []byte {
return b.buffer.Bytes()
}
func (b Buffer) Len() int {
return b.buffer.Len()
}
func (b *Buffer) Put() {
eipPool.Put(b)
}
// NewBuffer,从buffer池中取出并重置一个Buffer实例,将data写入后返回. data可以为nil.
func NewBuffer(data []byte) *Buffer {
b := NewEmptyBuffer()
b.buffer.Write(data)
return b
}
func NewEmptyBuffer() *Buffer {
b := eipPool.Get().(*Buffer)
b.Reset()
return b
}
var eipPool = sync.Pool{
New: func() interface{} {
return &Buffer{
buffer: bytes.NewBuffer(nil),
err: nil,
}
},
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/ziegate/common.git
git@gitee.com:ziegate/common.git
ziegate
common
common
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891