LCOV - code coverage report
Current view: top level - libs/proxy/postgres-types2/src - private.rs (source / functions) Coverage Total Hit
Test: 07bee600374ccd486c69370d0972d9035964fe68.info Lines: 0.0 % 27 0
Test Date: 2025-02-20 13:11:02 Functions: 0.0 % 2 0

            Line data    Source code
       1              : use crate::{FromSql, Type};
       2              : pub use bytes::BytesMut;
       3              : use std::error::Error;
       4              : 
       5            0 : pub fn read_be_i32(buf: &mut &[u8]) -> Result<i32, Box<dyn Error + Sync + Send>> {
       6            0 :     if buf.len() < 4 {
       7            0 :         return Err("invalid buffer size".into());
       8            0 :     }
       9            0 :     let mut bytes = [0; 4];
      10            0 :     bytes.copy_from_slice(&buf[..4]);
      11            0 :     *buf = &buf[4..];
      12            0 :     Ok(i32::from_be_bytes(bytes))
      13            0 : }
      14              : 
      15            0 : pub fn read_value<'a, T>(
      16            0 :     type_: &Type,
      17            0 :     buf: &mut &'a [u8],
      18            0 : ) -> Result<T, Box<dyn Error + Sync + Send>>
      19            0 : where
      20            0 :     T: FromSql<'a>,
      21            0 : {
      22            0 :     let len = read_be_i32(buf)?;
      23            0 :     let value = if len < 0 {
      24            0 :         None
      25              :     } else {
      26            0 :         if len as usize > buf.len() {
      27            0 :             return Err("invalid buffer size".into());
      28            0 :         }
      29            0 :         let (head, tail) = buf.split_at(len as usize);
      30            0 :         *buf = tail;
      31            0 :         Some(head)
      32              :     };
      33            0 :     T::from_sql_nullable(type_, value)
      34            0 : }
        

Generated by: LCOV version 2.1-beta