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}