diff --git a/transport/server.cc b/transport/server.cc index 444f077346..537c82fa8c 100644 --- a/transport/server.cc +++ b/transport/server.cc @@ -825,6 +825,17 @@ sstring cql_server::connection::read_string(temporary_buffer& buf) return s; } +sstring_view cql_server::connection::read_string_view(temporary_buffer& buf) +{ + auto n = read_short(buf); + check_room(buf, n); + sstring_view s{buf.begin(), static_cast(n)}; + assert(n >= 0); + buf.trim_front(n); + validate_utf8(s); + return s; +} + sstring_view cql_server::connection::read_long_string_view(temporary_buffer& buf) { auto n = read_int(buf); diff --git a/transport/server.hh b/transport/server.hh index 10da795430..8ba1e69778 100644 --- a/transport/server.hh +++ b/transport/server.hh @@ -177,10 +177,11 @@ private: int16_t read_short(temporary_buffer& buf); uint16_t read_unsigned_short(temporary_buffer& buf); sstring read_string(temporary_buffer& buf); + sstring_view read_string_view(temporary_buffer& buf); + sstring_view read_long_string_view(temporary_buffer& buf); bytes read_short_bytes(temporary_buffer& buf); bytes_opt read_value(temporary_buffer& buf); bytes_view_opt read_value_view(temporary_buffer& buf); - sstring_view read_long_string_view(temporary_buffer& buf); void read_name_and_value_list(temporary_buffer& buf, std::vector& names, std::vector& values); void read_string_list(temporary_buffer& buf, std::vector& strings); void read_value_view_list(temporary_buffer& buf, std::vector& values);