tiberius/tds/codec/column_data/
int.rs
1use crate::{sql_read_bytes::SqlReadBytes, ColumnData};
2
3pub(crate) async fn decode<R>(src: &mut R, type_len: usize) -> crate::Result<ColumnData<'static>>
4where
5 R: SqlReadBytes + Unpin,
6{
7 let recv_len = src.read_u8().await? as usize;
8
9 let res = match (recv_len, type_len) {
10 (0, 1) => ColumnData::U8(None),
11 (0, 2) => ColumnData::I16(None),
12 (0, 4) => ColumnData::I32(None),
13 (0, _) => ColumnData::I64(None),
14 (1, _) => ColumnData::U8(Some(src.read_u8().await?)),
15 (2, _) => ColumnData::I16(Some(src.read_i16_le().await?)),
16 (4, _) => ColumnData::I32(Some(src.read_i32_le().await?)),
17 (8, _) => ColumnData::I64(Some(src.read_i64_le().await?)),
18 _ => unimplemented!(),
19 };
20
21 Ok(res)
22}