gstreamer_net/auto/
net_time_provider.rs1use crate::ffi;
7use glib::{
8 prelude::*,
9 signal::{SignalHandlerId, connect_raw},
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 unsafe {
84 let f: &F = &*(f as *const F);
85 f(&from_glib_borrow(this))
86 }
87 }
88 unsafe {
89 let f: Box_<F> = Box_::new(f);
90 connect_raw(
91 self.as_ptr() as *mut _,
92 c"notify::active".as_ptr(),
93 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
94 notify_active_trampoline::<F> as *const (),
95 )),
96 Box_::into_raw(f),
97 )
98 }
99 }
100
101 #[doc(alias = "qos-dscp")]
102 pub fn connect_qos_dscp_notify<F: Fn(&Self) + Send + Sync + 'static>(
103 &self,
104 f: F,
105 ) -> SignalHandlerId {
106 unsafe extern "C" fn notify_qos_dscp_trampoline<
107 F: Fn(&NetTimeProvider) + Send + Sync + 'static,
108 >(
109 this: *mut ffi::GstNetTimeProvider,
110 _param_spec: glib::ffi::gpointer,
111 f: glib::ffi::gpointer,
112 ) {
113 unsafe {
114 let f: &F = &*(f as *const F);
115 f(&from_glib_borrow(this))
116 }
117 }
118 unsafe {
119 let f: Box_<F> = Box_::new(f);
120 connect_raw(
121 self.as_ptr() as *mut _,
122 c"notify::qos-dscp".as_ptr(),
123 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
124 notify_qos_dscp_trampoline::<F> as *const (),
125 )),
126 Box_::into_raw(f),
127 )
128 }
129 }
130}
131
132unsafe impl Send for NetTimeProvider {}
133unsafe impl Sync for NetTimeProvider {}