gio/auto/
network_service.rs1use crate::{ffi, SocketConnectable};
6use glib::{
7 prelude::*,
8 signal::{connect_raw, SignalHandlerId},
9 translate::*,
10};
11use std::boxed::Box as Box_;
12
13glib::wrapper! {
14 #[doc(alias = "GNetworkService")]
15 pub struct NetworkService(Object<ffi::GNetworkService, ffi::GNetworkServiceClass>) @implements SocketConnectable;
16
17 match fn {
18 type_ => || ffi::g_network_service_get_type(),
19 }
20}
21
22impl NetworkService {
23 pub const NONE: Option<&'static NetworkService> = None;
24
25 #[doc(alias = "g_network_service_new")]
26 pub fn new(service: &str, protocol: &str, domain: &str) -> NetworkService {
27 unsafe {
28 from_glib_full(ffi::g_network_service_new(
29 service.to_glib_none().0,
30 protocol.to_glib_none().0,
31 domain.to_glib_none().0,
32 ))
33 }
34 }
35}
36
37pub trait NetworkServiceExt: IsA<NetworkService> + 'static {
38 #[doc(alias = "g_network_service_get_domain")]
39 #[doc(alias = "get_domain")]
40 fn domain(&self) -> glib::GString {
41 unsafe {
42 from_glib_none(ffi::g_network_service_get_domain(
43 self.as_ref().to_glib_none().0,
44 ))
45 }
46 }
47
48 #[doc(alias = "g_network_service_get_protocol")]
49 #[doc(alias = "get_protocol")]
50 fn protocol(&self) -> glib::GString {
51 unsafe {
52 from_glib_none(ffi::g_network_service_get_protocol(
53 self.as_ref().to_glib_none().0,
54 ))
55 }
56 }
57
58 #[doc(alias = "g_network_service_get_scheme")]
59 #[doc(alias = "get_scheme")]
60 fn scheme(&self) -> glib::GString {
61 unsafe {
62 from_glib_none(ffi::g_network_service_get_scheme(
63 self.as_ref().to_glib_none().0,
64 ))
65 }
66 }
67
68 #[doc(alias = "g_network_service_get_service")]
69 #[doc(alias = "get_service")]
70 fn service(&self) -> glib::GString {
71 unsafe {
72 from_glib_none(ffi::g_network_service_get_service(
73 self.as_ref().to_glib_none().0,
74 ))
75 }
76 }
77
78 #[doc(alias = "g_network_service_set_scheme")]
79 #[doc(alias = "scheme")]
80 fn set_scheme(&self, scheme: &str) {
81 unsafe {
82 ffi::g_network_service_set_scheme(
83 self.as_ref().to_glib_none().0,
84 scheme.to_glib_none().0,
85 );
86 }
87 }
88
89 #[doc(alias = "scheme")]
90 fn connect_scheme_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
91 unsafe extern "C" fn notify_scheme_trampoline<
92 P: IsA<NetworkService>,
93 F: Fn(&P) + 'static,
94 >(
95 this: *mut ffi::GNetworkService,
96 _param_spec: glib::ffi::gpointer,
97 f: glib::ffi::gpointer,
98 ) {
99 let f: &F = &*(f as *const F);
100 f(NetworkService::from_glib_borrow(this).unsafe_cast_ref())
101 }
102 unsafe {
103 let f: Box_<F> = Box_::new(f);
104 connect_raw(
105 self.as_ptr() as *mut _,
106 c"notify::scheme".as_ptr() as *const _,
107 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
108 notify_scheme_trampoline::<Self, F> as *const (),
109 )),
110 Box_::into_raw(f),
111 )
112 }
113 }
114}
115
116impl<O: IsA<NetworkService>> NetworkServiceExt for O {}