mirror of
https://github.com/fumiama/WireGold.git
synced 2026-06-21 02:40:24 +08:00
optimize(orbyte): use manual destroy
This commit is contained in:
@@ -47,6 +47,7 @@ func (p *Packet) PreCRC64() (crc uint64) {
|
||||
)
|
||||
}
|
||||
})
|
||||
w.Destroy()
|
||||
return
|
||||
}
|
||||
|
||||
@@ -58,11 +59,13 @@ func (p *Packet) WriteHeaderTo(buf *bytes.Buffer) {
|
||||
buf.Write((*[PacketHeadNoCRCLen]byte)(
|
||||
(unsafe.Pointer)(p),
|
||||
)[:])
|
||||
pbuf.NewBytes(buf.Len()).V(func(b []byte) {
|
||||
b := pbuf.NewBytes(buf.Len())
|
||||
b.V(func(b []byte) {
|
||||
copy(b, buf.Bytes())
|
||||
ClearTTL(b)
|
||||
p.md5h8 = algo.MD5Hash8(b)
|
||||
})
|
||||
b.ManualDestroy()
|
||||
_ = binary.Write(buf, binary.LittleEndian, p.md5h8)
|
||||
return
|
||||
}
|
||||
@@ -76,14 +79,17 @@ func (p *Packet) WriteHeaderTo(buf *bytes.Buffer) {
|
||||
w.Write(p.src[:])
|
||||
w.Write(p.dst[:])
|
||||
w.P(func(buf *pbuf.Buffer) {
|
||||
pbuf.NewBytes(buf.Len()).V(func(b []byte) {
|
||||
b := pbuf.NewBytes(buf.Len())
|
||||
b.V(func(b []byte) {
|
||||
copy(b, buf.Bytes())
|
||||
ClearTTL(b)
|
||||
p.md5h8 = algo.MD5Hash8(b)
|
||||
})
|
||||
b.ManualDestroy()
|
||||
})
|
||||
w.WriteUInt64(p.md5h8)
|
||||
w.P(func(b *pbuf.Buffer) {
|
||||
_, _ = buf.ReadFrom(b)
|
||||
})
|
||||
w.Destroy()
|
||||
}
|
||||
|
||||
@@ -91,6 +91,7 @@ func (pb *DataBuilder) Zstd() *DataBuilder {
|
||||
if config.ShowDebugLog {
|
||||
logrus.Debugln(file.Header(), strconv.FormatUint(ub.DAT.md5h8, 16), "data after zstd", file.ToLimitHexString(ub.Bytes(), 64))
|
||||
}
|
||||
data.ManualDestroy()
|
||||
})
|
||||
}
|
||||
|
||||
@@ -125,7 +126,9 @@ func (pb *DataBuilder) Seal(aead cipher.AEAD, teatyp uint8, additional uint16) *
|
||||
data := algo.EncodeAEAD(aead, additional, b.Bytes())
|
||||
ub.Reset()
|
||||
data.V(func(b []byte) { ub.Write(b) })
|
||||
data.ManualDestroy()
|
||||
})
|
||||
w.Destroy()
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -139,6 +142,7 @@ func (pb *DataBuilder) Plain(teatyp uint8, additional uint16) *PacketBuilder {
|
||||
ub.Reset()
|
||||
_, _ = ub.ReadFrom(b)
|
||||
})
|
||||
w.Destroy()
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -228,6 +232,11 @@ func (pb *PacketBuilder) Split(mtu int, nofrag bool) (pbs []PacketBytes) {
|
||||
return
|
||||
}
|
||||
|
||||
// Destroy call this once no one use it.
|
||||
func (pb *PacketBuilder) Destroy() {
|
||||
(*PacketItem)(pb).ManualDestroy()
|
||||
}
|
||||
|
||||
func BuildPacketFromBytes(pb PacketBytes) pbuf.Bytes {
|
||||
w := bin.SelectWriter()
|
||||
pb.B(func(_ []byte, p *Packet) {
|
||||
|
||||
@@ -55,11 +55,13 @@ func ParsePacketHeader(data []byte) (pbytes PacketBytes, err error) {
|
||||
return
|
||||
}
|
||||
var crc uint64
|
||||
pbuf.NewBytes(int(PacketHeadNoCRCLen)).V(func(b []byte) {
|
||||
b := pbuf.NewBytes(int(PacketHeadNoCRCLen))
|
||||
b.V(func(b []byte) {
|
||||
copy(b, data[:PacketHeadNoCRCLen])
|
||||
ClearTTL(b)
|
||||
crc = algo.MD5Hash8(b)
|
||||
})
|
||||
b.ManualDestroy()
|
||||
if crc != pb.DAT.md5h8 {
|
||||
err = ErrBadCRCChecksum
|
||||
if config.ShowDebugLog {
|
||||
@@ -80,6 +82,7 @@ func ParsePacketHeader(data []byte) (pbytes PacketBytes, err error) {
|
||||
pb.DAT.hashrem = int64(sz)
|
||||
})
|
||||
if err != nil {
|
||||
p.ManualDestroy()
|
||||
return
|
||||
}
|
||||
pbytes = pbuf.BufferItemToBytes(p)
|
||||
|
||||
Reference in New Issue
Block a user