1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
// DO NOT EDIT
use crate::{ffi, RTSPResult};
use glib::translate::*;
glib::wrapper! {
/// Provides helper functions to handle RTSP urls.
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct RTSPUrl(Boxed<ffi::GstRTSPUrl>);
match fn {
copy => |ptr| ffi::gst_rtsp_url_copy(ptr),
free => |ptr| ffi::gst_rtsp_url_free(ptr),
type_ => || ffi::gst_rtsp_url_get_type(),
}
}
impl RTSPUrl {
/// Splits the path of `self` on '/' boundaries, decoding the resulting components,
///
/// The decoding performed by this routine is "URI decoding", as defined in RFC
/// 3986, commonly known as percent-decoding. For example, a string "foo\`2fbar`"
/// will decode to "foo/bar" -- the \`2f` being replaced by the corresponding byte
/// with hex value 0x2f. Note that there is no guarantee that the resulting byte
/// sequence is valid in any given encoding. As a special case, \`00` is not
/// unescaped to NUL, as that would prematurely terminate the string.
///
/// Also note that since paths usually start with a slash, the first component
/// will usually be the empty string.
///
/// # Returns
///
/// [`None`]-terminated array of URL components. Free with
/// `g_strfreev()` when no longer needed.
#[doc(alias = "gst_rtsp_url_decode_path_components")]
pub fn decode_path_components(&self) -> Vec<glib::GString> {
unsafe {
FromGlibPtrContainer::from_glib_full(ffi::gst_rtsp_url_decode_path_components(
self.to_glib_none().0,
))
}
}
/// Get a newly allocated string describing the request URI for `self`.
///
/// # Returns
///
/// a string with the request URI. `g_free()` after usage.
#[doc(alias = "gst_rtsp_url_get_request_uri")]
#[doc(alias = "get_request_uri")]
pub fn request_uri(&self) -> glib::GString {
unsafe { from_glib_full(ffi::gst_rtsp_url_get_request_uri(self.to_glib_none().0)) }
}
/// Get a newly allocated string describing the request URI for `self`
/// combined with the control path for `control_path`
/// ## `control_path`
/// an RTSP aggregate control path
///
/// # Returns
///
/// a string with the request URI combined with the control path.
/// `g_free()` after usage.
#[cfg(feature = "v1_18")]
#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
#[doc(alias = "gst_rtsp_url_get_request_uri_with_control")]
#[doc(alias = "get_request_uri_with_control")]
pub fn request_uri_with_control(&self, control_path: &str) -> glib::GString {
unsafe {
from_glib_full(ffi::gst_rtsp_url_get_request_uri_with_control(
self.to_glib_none().0,
control_path.to_glib_none().0,
))
}
}
/// Set the port number in `self` to `port`.
/// ## `port`
/// the port
///
/// # Returns
///
/// [`RTSPResult::Ok`][crate::RTSPResult::Ok].
#[doc(alias = "gst_rtsp_url_set_port")]
pub fn set_port(&mut self, port: u16) -> RTSPResult {
unsafe { from_glib(ffi::gst_rtsp_url_set_port(self.to_glib_none_mut().0, port)) }
}
/// Parse the RTSP `urlstr` into a newly allocated [`RTSPUrl`][crate::RTSPUrl]. Free after usage
/// with `gst_rtsp_url_free()`.
/// ## `urlstr`
/// the url string to parse
///
/// # Returns
///
/// a [`RTSPResult`][crate::RTSPResult].
///
/// ## `url`
/// location to hold the result.
#[doc(alias = "gst_rtsp_url_parse")]
pub fn parse(urlstr: &str) -> (RTSPResult, Option<RTSPUrl>) {
assert_initialized_main_thread!();
unsafe {
let mut url = std::ptr::null_mut();
let ret = from_glib(ffi::gst_rtsp_url_parse(urlstr.to_glib_none().0, &mut url));
(ret, from_glib_full(url))
}
}
}
unsafe impl Send for RTSPUrl {}