use bytes_parser::BytesParser;
use crate::errors::KonsumerOffsetsError;
pub(crate) fn parse_str(parser: &mut BytesParser) -> Result<String, KonsumerOffsetsError> {
let group_strlen = parse_i16(parser)?;
if group_strlen < 0 {
return Ok(String::default());
}
parser.parse_str_utf8(group_strlen as usize).map(|s| s.into()).map_err(KonsumerOffsetsError::ByteParsingError)
}
pub(crate) fn parse_vec_bytes(parser: &mut BytesParser) -> Result<Vec<u8>, KonsumerOffsetsError> {
let bytes_array_len = parse_i32(parser)?;
let slice = parser.parse_slice(bytes_array_len as usize).map_err(KonsumerOffsetsError::ByteParsingError)?;
Ok(slice.to_vec())
}
pub(crate) fn parse_i16(parser: &mut BytesParser) -> Result<i16, KonsumerOffsetsError> {
parser.parse_i16().map_err(KonsumerOffsetsError::ByteParsingError)
}
pub(crate) fn parse_i32(parser: &mut BytesParser) -> Result<i32, KonsumerOffsetsError> {
parser.parse_i32().map_err(KonsumerOffsetsError::ByteParsingError)
}
pub(crate) fn parse_i64(parser: &mut BytesParser) -> Result<i64, KonsumerOffsetsError> {
parser.parse_i64().map_err(KonsumerOffsetsError::ByteParsingError)
}