Skip to content

Commit 50907f2

Browse files
authored
feat: 新增部分方法 用于兼容 go-cqhttp 操作 bufferPool (#166)
1 parent e2eafca commit 50907f2

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

utils/binary/builder.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package binary
22

33
import (
4+
"bytes"
45
"encoding/binary"
56
"io"
67
"math"
@@ -45,6 +46,17 @@ func (b *Builder) ToBytes() (data []byte) {
4546
return
4647
}
4748

49+
func (b *Builder) Buffer() (buffer *bytes.Buffer) {
50+
b.p(func(ub *pbuf.UserBuffer[teacfg]) {
51+
buffer = &ub.Buffer
52+
})
53+
return
54+
}
55+
56+
func (b *Builder) ManualDestroy() {
57+
(*orbyte.Item[pbuf.UserBuffer[teacfg]])(b).ManualDestroy()
58+
}
59+
4860
// Pack TLV with tea encryption if key is set
4961
//
5062
// GC 安全, 返回的数据在 Builder 被销毁之后仍能被正确读取,

utils/binary/pool.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ func NewBuilder(key ...byte) *Builder {
2525
return (*Builder)(b)
2626
}
2727

28+
// PutBuilder
29+
func PutBuilder(b *Builder) {
30+
b.ManualDestroy()
31+
}
32+
2833
var gzipPool = sync.Pool{
2934
New: func() any {
3035
buf := new(bytes.Buffer)

0 commit comments

Comments
 (0)