mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2025-02-15 02:25:26 +00:00
Trait objects without are deprecated with the latest nightly and this makes it more clear that we're doing dynamic dispatch anyway.
86 lines
2.2 KiB
Rust
86 lines
2.2 KiB
Rust
use glib;
|
|
use glib::translate::*;
|
|
use glib::value::ToSendValue;
|
|
use gst;
|
|
use gst::miniobject::*;
|
|
use gst_rtsp_server_sys;
|
|
|
|
use std::fmt;
|
|
|
|
gst_define_mini_object_wrapper!(
|
|
RTSPToken,
|
|
RTSPTokenRef,
|
|
gst_rtsp_server_sys::GstRTSPToken,
|
|
[Debug,],
|
|
|| gst_rtsp_server_sys::gst_rtsp_token_get_type()
|
|
);
|
|
|
|
impl RTSPToken {
|
|
pub fn new_empty() -> Self {
|
|
assert_initialized_main_thread!();
|
|
unsafe { from_glib_full(gst_rtsp_server_sys::gst_rtsp_token_new_empty()) }
|
|
}
|
|
|
|
pub fn new(values: &[(&str, &dyn ToSendValue)]) -> Self {
|
|
let mut token = RTSPToken::new_empty();
|
|
|
|
{
|
|
let token = token.get_mut().unwrap();
|
|
let structure = token.get_mut_structure().unwrap();
|
|
|
|
for &(f, v) in values {
|
|
structure.set_value(f, v.to_send_value());
|
|
}
|
|
}
|
|
|
|
token
|
|
}
|
|
}
|
|
|
|
impl RTSPTokenRef {
|
|
pub fn get_string(&self, field: &str) -> Option<String> {
|
|
unsafe {
|
|
from_glib_none(gst_rtsp_server_sys::gst_rtsp_token_get_string(
|
|
self.as_mut_ptr(),
|
|
field.to_glib_none().0,
|
|
))
|
|
}
|
|
}
|
|
|
|
pub fn get_structure(&self) -> Option<gst::Structure> {
|
|
unsafe {
|
|
from_glib_none(gst_rtsp_server_sys::gst_rtsp_token_get_structure(
|
|
self.as_mut_ptr(),
|
|
))
|
|
}
|
|
}
|
|
|
|
pub fn is_allowed(&self, field: &str) -> bool {
|
|
unsafe {
|
|
from_glib(gst_rtsp_server_sys::gst_rtsp_token_is_allowed(
|
|
self.as_mut_ptr(),
|
|
field.to_glib_none().0,
|
|
))
|
|
}
|
|
}
|
|
|
|
pub fn get_mut_structure(&mut self) -> Option<&mut gst::StructureRef> {
|
|
unsafe {
|
|
let structure =
|
|
gst_rtsp_server_sys::gst_rtsp_token_writable_structure(self.as_mut_ptr());
|
|
if structure.is_null() {
|
|
None
|
|
} else {
|
|
Some(gst::StructureRef::from_glib_borrow_mut(structure))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
impl fmt::Debug for RTSPTokenRef {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
f.debug_struct("RTSPToken")
|
|
.field("structure", &self.get_structure())
|
|
.finish()
|
|
}
|
|
}
|