/
germanubis
/
sqlx
Обзор
Документация
Войти
/
germanubis
/
sqlx
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
sqlx-postgres/src/message/notification.rs
39 строк
1 KB
Austin Bonander
refactor(postgres): make better use of traits to improve protocol handling
24 авг 2024, 09:39
24 авг 2024, 09:39
53766e4
Код
Авторство
О чём код?
use sqlx_core::bytes::{Buf, Bytes}; use crate::error::Error; use crate::io::BufExt; use crate::message::{BackendMessage, BackendMessageFormat}; #[derive(Debug)] pub struct Notification { pub(crate) process_id: u32, pub(crate) channel: Bytes, pub(crate) payload: Bytes, } impl BackendMessage for Notification { const FORMAT: BackendMessageFormat = BackendMessageFormat::NotificationResponse; fn decode_body(mut buf: Bytes) -> Result<Self, Error> { let process_id = buf.get_u32(); let channel = buf.get_bytes_nul()?; let payload = buf.get_bytes_nul()?; Ok(Self { process_id, channel, payload, }) } } #[test] fn test_decode_notification_response() { const NOTIFICATION_RESPONSE: &[u8] = b"\x34\x20\x10\x02TEST-CHANNEL\0THIS IS A TEST\0"; let message = Notification::decode_body(Bytes::from(NOTIFICATION_RESPONSE)).unwrap(); assert_eq!(message.process_id, 0x34201002); assert_eq!(&*message.channel, &b"TEST-CHANNEL"[..]); assert_eq!(&*message.payload, &b"THIS IS A TEST"[..]); }