gio/auto/
tls_client_connection.rs1#![allow(deprecated)]
5
6use crate::{IOStream, SocketConnectable, TlsCertificateFlags, TlsConnection, 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 = "GTlsClientConnection")]
16 pub struct TlsClientConnection(Interface<ffi::GTlsClientConnection, ffi::GTlsClientConnectionInterface>) @requires TlsConnection, IOStream;
17
18 match fn {
19 type_ => || ffi::g_tls_client_connection_get_type(),
20 }
21}
22
23impl TlsClientConnection {
24 pub const NONE: Option<&'static TlsClientConnection> = None;
25
26 #[doc(alias = "g_tls_client_connection_new")]
27 pub fn new(
28 base_io_stream: &impl IsA<IOStream>,
29 server_identity: Option<&impl IsA<SocketConnectable>>,
30 ) -> Result<TlsClientConnection, glib::Error> {
31 unsafe {
32 let mut error = std::ptr::null_mut();
33 let ret = ffi::g_tls_client_connection_new(
34 base_io_stream.as_ref().to_glib_none().0,
35 server_identity.map(|p| p.as_ref()).to_glib_none().0,
36 &mut error,
37 );
38 if error.is_null() {
39 Ok(from_glib_full(ret))
40 } else {
41 Err(from_glib_full(error))
42 }
43 }
44 }
45}
46
47pub trait TlsClientConnectionExt: IsA<TlsClientConnection> + 'static {
48 #[doc(alias = "g_tls_client_connection_copy_session_state")]
49 fn copy_session_state(&self, source: &impl IsA<TlsClientConnection>) {
50 unsafe {
51 ffi::g_tls_client_connection_copy_session_state(
52 self.as_ref().to_glib_none().0,
53 source.as_ref().to_glib_none().0,
54 );
55 }
56 }
57
58 #[doc(alias = "g_tls_client_connection_get_accepted_cas")]
59 #[doc(alias = "get_accepted_cas")]
60 #[doc(alias = "accepted-cas")]
61 fn accepted_cas(&self) -> Vec<glib::ByteArray> {
62 unsafe {
63 FromGlibPtrContainer::from_glib_full(ffi::g_tls_client_connection_get_accepted_cas(
64 self.as_ref().to_glib_none().0,
65 ))
66 }
67 }
68
69 #[doc(alias = "g_tls_client_connection_get_server_identity")]
70 #[doc(alias = "get_server_identity")]
71 #[doc(alias = "server-identity")]
72 fn server_identity(&self) -> Option<SocketConnectable> {
73 unsafe {
74 from_glib_none(ffi::g_tls_client_connection_get_server_identity(
75 self.as_ref().to_glib_none().0,
76 ))
77 }
78 }
79
80 #[cfg_attr(feature = "v2_72", deprecated = "Since 2.72")]
81 #[allow(deprecated)]
82 #[doc(alias = "g_tls_client_connection_get_validation_flags")]
83 #[doc(alias = "get_validation_flags")]
84 #[doc(alias = "validation-flags")]
85 fn validation_flags(&self) -> TlsCertificateFlags {
86 unsafe {
87 from_glib(ffi::g_tls_client_connection_get_validation_flags(
88 self.as_ref().to_glib_none().0,
89 ))
90 }
91 }
92
93 #[doc(alias = "g_tls_client_connection_set_server_identity")]
94 #[doc(alias = "server-identity")]
95 fn set_server_identity(&self, identity: &impl IsA<SocketConnectable>) {
96 unsafe {
97 ffi::g_tls_client_connection_set_server_identity(
98 self.as_ref().to_glib_none().0,
99 identity.as_ref().to_glib_none().0,
100 );
101 }
102 }
103
104 #[cfg_attr(feature = "v2_72", deprecated = "Since 2.72")]
105 #[allow(deprecated)]
106 #[doc(alias = "g_tls_client_connection_set_validation_flags")]
107 #[doc(alias = "validation-flags")]
108 fn set_validation_flags(&self, flags: TlsCertificateFlags) {
109 unsafe {
110 ffi::g_tls_client_connection_set_validation_flags(
111 self.as_ref().to_glib_none().0,
112 flags.into_glib(),
113 );
114 }
115 }
116
117 #[doc(alias = "accepted-cas")]
118 fn connect_accepted_cas_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
119 unsafe extern "C" fn notify_accepted_cas_trampoline<
120 P: IsA<TlsClientConnection>,
121 F: Fn(&P) + 'static,
122 >(
123 this: *mut ffi::GTlsClientConnection,
124 _param_spec: glib::ffi::gpointer,
125 f: glib::ffi::gpointer,
126 ) {
127 unsafe {
128 let f: &F = &*(f as *const F);
129 f(TlsClientConnection::from_glib_borrow(this).unsafe_cast_ref())
130 }
131 }
132 unsafe {
133 let f: Box_<F> = Box_::new(f);
134 connect_raw(
135 self.as_ptr() as *mut _,
136 c"notify::accepted-cas".as_ptr(),
137 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
138 notify_accepted_cas_trampoline::<Self, F> as *const (),
139 )),
140 Box_::into_raw(f),
141 )
142 }
143 }
144
145 #[doc(alias = "server-identity")]
146 fn connect_server_identity_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
147 unsafe extern "C" fn notify_server_identity_trampoline<
148 P: IsA<TlsClientConnection>,
149 F: Fn(&P) + 'static,
150 >(
151 this: *mut ffi::GTlsClientConnection,
152 _param_spec: glib::ffi::gpointer,
153 f: glib::ffi::gpointer,
154 ) {
155 unsafe {
156 let f: &F = &*(f as *const F);
157 f(TlsClientConnection::from_glib_borrow(this).unsafe_cast_ref())
158 }
159 }
160 unsafe {
161 let f: Box_<F> = Box_::new(f);
162 connect_raw(
163 self.as_ptr() as *mut _,
164 c"notify::server-identity".as_ptr(),
165 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
166 notify_server_identity_trampoline::<Self, F> as *const (),
167 )),
168 Box_::into_raw(f),
169 )
170 }
171 }
172
173 #[cfg_attr(feature = "v2_72", deprecated = "Since 2.72")]
174 #[doc(alias = "validation-flags")]
175 fn connect_validation_flags_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
176 unsafe extern "C" fn notify_validation_flags_trampoline<
177 P: IsA<TlsClientConnection>,
178 F: Fn(&P) + 'static,
179 >(
180 this: *mut ffi::GTlsClientConnection,
181 _param_spec: glib::ffi::gpointer,
182 f: glib::ffi::gpointer,
183 ) {
184 unsafe {
185 let f: &F = &*(f as *const F);
186 f(TlsClientConnection::from_glib_borrow(this).unsafe_cast_ref())
187 }
188 }
189 unsafe {
190 let f: Box_<F> = Box_::new(f);
191 connect_raw(
192 self.as_ptr() as *mut _,
193 c"notify::validation-flags".as_ptr(),
194 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
195 notify_validation_flags_trampoline::<Self, F> as *const (),
196 )),
197 Box_::into_raw(f),
198 )
199 }
200 }
201}
202
203impl<O: IsA<TlsClientConnection>> TlsClientConnectionExt for O {}