Files
amneziawg-go/conceal/slice_buffer.go
T
Frog Rocky f4cdedf40a perf(conceal): optimize record and prelude hot paths
Replace hot-path bytes.NewBuffer usage with slice-backed readers and
writers, and build FlexBuffer-backed read/write contexts by value.

Remove defer from the targeted per-message and per-batch write paths,
return pooled buffers explicitly after downstream writes complete, and
keep TCP/UDP prelude behavior unchanged.

Add focused regression tests for stream, UDP, and batch masquerade and
prelude writes, and fix write-side bookkeeping to emit the actual
encoded bytes.
2026-04-04 01:08:08 +02:00

43 lines
662 B
Go

package conceal
import "io"
type sliceReader struct {
buf []byte
}
func newSliceReader(buf []byte) sliceReader {
return sliceReader{buf: buf}
}
func (r *sliceReader) Read(p []byte) (n int, err error) {
if len(r.buf) == 0 {
return 0, io.EOF
}
n = copy(p, r.buf)
r.buf = r.buf[n:]
return n, nil
}
type sliceWriter struct {
buf []byte
}
func newSliceWriter(buf []byte) sliceWriter {
return sliceWriter{buf: buf[:0]}
}
func (w *sliceWriter) Reset(buf []byte) {
w.buf = buf[:0]
}
func (w *sliceWriter) Write(p []byte) (n int, err error) {
w.buf = append(w.buf, p...)
return len(p), nil
}
func (w *sliceWriter) Bytes() []byte {
return w.buf
}