package internal // Minimal protobuf wire helpers (bytes/string fields only). const ( errCodeOverflow = -2 errCodeTruncated = -1 ) func consumeVarint(b []byte) (uint64, int) { var x uint64 var s uint for i, c := range b { if c < 0x80 { if i > 9 || i == 9 && c > 1 { return 0, errCodeOverflow } return x | uint64(c)< uint64(len(b)-n) { return nil, errCodeOverflow } return b[n : n+int(v)], n + int(v) } // ConsumeString parses a length-delimited string field. func ConsumeString(b []byte) (string, int) { v, n := ConsumeBytes(b) if n < 0 { return "", n } return string(v), n } func parseError(code int) error { switch code { case errCodeOverflow: return errOverflow case errCodeTruncated: return errTruncated default: return errTruncated } } var ( errOverflow = &parseErr{"overflow"} errTruncated = &parseErr{"truncated"} ) type parseErr struct{ msg string } func (e *parseErr) Error() string { return "protowire: " + e.msg }