34 lines
611 B
Go
34 lines
611 B
Go
package binary
|
|
|
|
import (
|
|
"io"
|
|
|
|
. "github.com/tendermint/tendermint/common"
|
|
)
|
|
|
|
// String
|
|
|
|
func WriteString(s string, w io.Writer, n *int64, err *error) {
|
|
WriteVarint(len(s), w, n, err)
|
|
WriteTo([]byte(s), w, n, err)
|
|
}
|
|
|
|
func ReadString(r io.Reader, n *int64, err *error) string {
|
|
length := ReadVarint(r, n, err)
|
|
if *err != nil {
|
|
return ""
|
|
}
|
|
if length < 0 {
|
|
*err = ErrBinaryReadSizeUnderflow
|
|
return ""
|
|
}
|
|
if MaxBinaryReadSize < MaxInt64(int64(length), *n+int64(length)) {
|
|
*err = ErrBinaryReadSizeOverflow
|
|
return ""
|
|
}
|
|
|
|
buf := make([]byte, length)
|
|
ReadFull(buf, r, n, err)
|
|
return string(buf)
|
|
}
|