gstreamer_rtsp/
rtsp_message.rs

1use crate::{ffi, RTSPAuthCredential, RTSPHeaderField, RTSPStatusCode};
2use glib::translate::*;
3
4glib::wrapper! {
5    #[derive(PartialEq, Eq, PartialOrd, Ord, Hash)]
6    #[doc(alias = "GstRTSPMessage")]
7    pub struct RTSPMessage(Boxed<ffi::GstRTSPMessage>);
8
9    match fn {
10        copy => |ptr| {
11            let mut copy = std::ptr::null_mut();
12            let res = ffi::gst_rtsp_message_copy(ptr, &mut copy);
13            debug_assert_eq!(res, ffi::GST_RTSP_OK);
14            copy
15        },
16        free => |ptr| {
17            let res = ffi::gst_rtsp_message_free(ptr);
18            debug_assert_eq!(res, ffi::GST_RTSP_OK);
19        },
20        type_ => || ffi::gst_rtsp_msg_get_type(),
21    }
22}
23
24impl RTSPMessage {
25    pub const NONE: Option<&'static RTSPMessage> = None;
26
27    #[doc(alias = "gst_rtsp_message_add_header")]
28    pub fn add_header(&self, header: RTSPHeaderField, value: &str) {
29        let ptr = self.to_glib_none().0;
30        unsafe {
31            ffi::gst_rtsp_message_add_header(ptr, header.into_glib(), value.to_glib_none().0);
32        }
33    }
34
35    #[doc(alias = "gst_rtsp_message_init_response")]
36    pub fn init_response(&self, code: RTSPStatusCode, request: Option<&RTSPMessage>) {
37        let ptr = self.to_glib_none().0;
38        unsafe {
39            ffi::gst_rtsp_message_init_response(
40                ptr,
41                code.into_glib(),
42                ffi::gst_rtsp_status_as_text(code.into_glib()),
43                request.to_glib_none().0,
44            );
45        }
46    }
47
48    #[doc(alias = "gst_rtsp_message_parse_auth_credentials")]
49    pub fn parse_auth_credentials(&self) -> glib::collections::PtrSlice<RTSPAuthCredential> {
50        unsafe {
51            let credentials = ffi::gst_rtsp_message_parse_auth_credentials(
52                self.to_glib_none().0,
53                ffi::GST_RTSP_HDR_AUTHORIZATION,
54            );
55            FromGlibPtrContainer::from_glib_full(credentials)
56        }
57    }
58}