good morning!!!!

Skip to content
Snippets Groups Projects
Commit 2d78d4c3 authored by Garet Halliday's avatar Garet Halliday
Browse files

string as bytes IO methods to allow sync.Pool

parent 2c8135cd
No related branches found
No related tags found
No related merge requests found
......@@ -202,15 +202,27 @@ func (T *Buf) readFloat64() (float64, bool) {
return math.Float64frombits(v), true
}
func (T *Buf) readString() (string, bool) {
func (T *Buf) readUnsafeString() ([]byte, bool) {
rem := T.remaining()
for i, c := range rem {
if c == 0 {
T.pos += i + 1
return string(rem[:i]), true
return rem[:i], true
}
}
return "", false
return nil, false
}
func (T *Buf) readStringBytes(v []byte) ([]byte, bool) {
str, ok := T.readUnsafeString()
v = slices.Resize(v, len(str))
copy(v, str)
return v, ok
}
func (T *Buf) readString() (string, bool) {
str, ok := T.readUnsafeString()
return string(str), ok
}
func (T *Buf) readBytes(b []byte) bool {
......@@ -283,6 +295,11 @@ func (T *Buf) writeFloat64(v float64) {
T.writeUint64(math.Float64bits(v))
}
func (T *Buf) writeStringBytes(v []byte) {
T.buf = append(T.buf, v...)
T.buf = append(T.buf, 0)
}
func (T *Buf) writeString(v string) {
T.buf = append(T.buf, v...)
T.buf = append(T.buf, 0)
......
......@@ -70,6 +70,11 @@ func (T In) Float64() (float64, bool) {
return T.buf.readFloat64()
}
func (T In) StringBytes(b []byte) ([]byte, bool) {
T.buf.assertRev(T.rev)
return T.buf.readStringBytes(b)
}
func (T In) String() (string, bool) {
T.buf.assertRev(T.rev)
return T.buf.readString()
......
......@@ -70,6 +70,11 @@ func (T Out) Float64(v float64) {
T.buf.writeFloat64(v)
}
func (T Out) StringBytes(v []byte) {
T.buf.assertRev(T.rev)
T.buf.writeStringBytes(v)
}
func (T Out) String(v string) {
T.buf.assertRev(T.rev)
T.buf.writeString(v)
......
......@@ -9,7 +9,8 @@ import (
)
type ReadWriter struct {
rw dio.ReadWriter
rw dio.ReadWriter
// they are seperated out to prevent an expensive runtime.convI2I (which causes runtime.getitab)
r io.Reader
w io.Writer
buf zap.Buf
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment