gstreamer_net/auto/
net_time_provider.rs1use crate::ffi;
7use glib::{
8 prelude::*,
9 signal::{connect_raw, SignalHandlerId},
10 translate::*,
11};
12use std::boxed::Box as Box_;
13
14glib::wrapper! {
15 #[doc(alias = "GstNetTimeProvider")]
16 pub struct NetTimeProvider(Object<ffi::GstNetTimeProvider, ffi::GstNetTimeProviderClass>) @extends gst::Object;
17
18 match fn {
19 type_ => || ffi::gst_net_time_provider_get_type(),
20 }
21}
22
23impl NetTimeProvider {
24 #[doc(alias = "gst_net_time_provider_new")]
25 pub fn new(
26 clock: &impl IsA<gst::Clock>,
27 address: Option<&str>,
28 port: i32,
29 ) -> Result<NetTimeProvider, glib::BoolError> {
30 assert_initialized_main_thread!();
31 unsafe {
32 Option::<_>::from_glib_full(ffi::gst_net_time_provider_new(
33 clock.as_ref().to_glib_none().0,
34 address.to_glib_none().0,
35 port,
36 ))
37 .ok_or_else(|| glib::bool_error!("Failed to create NetTimeProvider"))
38 }
39 }
40
41 pub fn is_active(&self) -> bool {
42 ObjectExt::property(self, "active")
43 }
44
45 pub fn set_active(&self, active: bool) {
46 ObjectExt::set_property(self, "active", active)
47 }
48
49 pub fn address(&self) -> Option<glib::GString> {
50 ObjectExt::property(self, "address")
51 }
52
53 pub fn clock(&self) -> Option<gst::Clock> {
54 ObjectExt::property(self, "clock")
55 }
56
57 pub fn port(&self) -> i32 {
58 ObjectExt::property(self, "port")
59 }
60
61 #[doc(alias = "qos-dscp")]
62 pub fn qos_dscp(&self) -> i32 {
63 ObjectExt::property(self, "qos-dscp")
64 }
65
66 #[doc(alias = "qos-dscp")]
67 pub fn set_qos_dscp(&self, qos_dscp: i32) {
68 ObjectExt::set_property(self, "qos-dscp", qos_dscp)
69 }
70
71 #[doc(alias = "active")]
72 pub fn connect_active_notify<F: Fn(&Self) + Send + Sync + 'static>(
73 &self,
74 f: F,
75 ) -> SignalHandlerId {
76 unsafe extern "C" fn notify_active_trampoline<
77 F: Fn(&NetTimeProvider) + Send + Sync + 'static,
78 >(
79 this: *mut ffi::GstNetTimeProvider,
80 _param_spec: glib::ffi::gpointer,
81 f: glib::ffi::gpointer,
82 ) {
83 let f: &F = &*(f as *const F);
84 f(&from_glib_borrow(this))
85 }
86 unsafe {
87 let f: Box_<F> = Box_::new(f);
88 connect_raw(
89 self.as_ptr() as *mut _,
90 c"notify::active".as_ptr() as *const _,
91 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
92 notify_active_trampoline::<F> as *const (),
93 )),
94 Box_::into_raw(f),
95 )
96 }
97 }
98
99 #[doc(alias = "qos-dscp")]
100 pub fn connect_qos_dscp_notify<F: Fn(&Self) + Send + Sync + 'static>(
101 &self,
102 f: F,
103 ) -> SignalHandlerId {
104 unsafe extern "C" fn notify_qos_dscp_trampoline<
105 F: Fn(&NetTimeProvider) + Send + Sync + 'static,
106 >(
107 this: *mut ffi::GstNetTimeProvider,
108 _param_spec: glib::ffi::gpointer,
109 f: glib::ffi::gpointer,
110 ) {
111 let f: &F = &*(f as *const F);
112 f(&from_glib_borrow(this))
113 }
114 unsafe {
115 let f: Box_<F> = Box_::new(f);
116 connect_raw(
117 self.as_ptr() as *mut _,
118 c"notify::qos-dscp".as_ptr() as *const _,
119 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
120 notify_qos_dscp_trampoline::<F> as *const (),
121 )),
122 Box_::into_raw(f),
123 )
124 }
125 }
126}
127
128unsafe impl Send for NetTimeProvider {}
129unsafe impl Sync for NetTimeProvider {}