gio/auto/unix_credentials_message.rs
1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// DO NOT EDIT
4
5use crate::{ffi, Credentials, SocketControlMessage};
6use glib::{prelude::*, translate::*};
7
8glib::wrapper! {
9 /// This [`SocketControlMessage`][crate::SocketControlMessage] contains a [`Credentials`][crate::Credentials]
10 /// instance. It may be sent using [`SocketExtManual::send_message()`][crate::prelude::SocketExtManual::send_message()] and received
11 /// using [`SocketExtManual::receive_message()`][crate::prelude::SocketExtManual::receive_message()] over UNIX sockets (ie: sockets in
12 /// the `G_SOCKET_FAMILY_UNIX` family).
13 ///
14 /// For an easier way to send and receive credentials over
15 /// stream-oriented UNIX sockets, see
16 /// [`UnixConnectionExt::send_credentials()`][crate::prelude::UnixConnectionExt::send_credentials()] and
17 /// [`UnixConnectionExt::receive_credentials()`][crate::prelude::UnixConnectionExt::receive_credentials()]. To receive credentials of
18 /// a foreign process connected to a socket, use
19 /// [`SocketExt::credentials()`][crate::prelude::SocketExt::credentials()].
20 ///
21 /// Since GLib 2.72, `GUnixCredentialMessage` is available on all platforms. It
22 /// requires underlying system support (such as Windows 10 with `AF_UNIX`) at run
23 /// time.
24 ///
25 /// Before GLib 2.72, `<gio/gunixcredentialsmessage.h>` belonged to the UNIX-specific
26 /// GIO interfaces, thus you had to use the `gio-unix-2.0.pc` pkg-config file
27 /// when using it. This is no longer necessary since GLib 2.72.
28 ///
29 /// ## Properties
30 ///
31 ///
32 /// #### `credentials`
33 /// The credentials stored in the message.
34 ///
35 /// Readable | Writeable | Construct Only
36 ///
37 /// # Implements
38 ///
39 /// [`UnixCredentialsMessageExt`][trait@crate::prelude::UnixCredentialsMessageExt], [`SocketControlMessageExt`][trait@crate::prelude::SocketControlMessageExt], [`trait@glib::ObjectExt`], [`SocketControlMessageExtManual`][trait@crate::prelude::SocketControlMessageExtManual]
40 #[doc(alias = "GUnixCredentialsMessage")]
41 pub struct UnixCredentialsMessage(Object<ffi::GUnixCredentialsMessage, ffi::GUnixCredentialsMessageClass>) @extends SocketControlMessage;
42
43 match fn {
44 type_ => || ffi::g_unix_credentials_message_get_type(),
45 }
46}
47
48impl UnixCredentialsMessage {
49 pub const NONE: Option<&'static UnixCredentialsMessage> = None;
50
51 /// Creates a new #GUnixCredentialsMessage with credentials matching the current processes.
52 ///
53 /// # Returns
54 ///
55 /// a new #GUnixCredentialsMessage
56 #[doc(alias = "g_unix_credentials_message_new")]
57 pub fn new() -> UnixCredentialsMessage {
58 unsafe {
59 SocketControlMessage::from_glib_full(ffi::g_unix_credentials_message_new())
60 .unsafe_cast()
61 }
62 }
63
64 /// Creates a new #GUnixCredentialsMessage holding @credentials.
65 /// ## `credentials`
66 /// A #GCredentials object.
67 ///
68 /// # Returns
69 ///
70 /// a new #GUnixCredentialsMessage
71 #[doc(alias = "g_unix_credentials_message_new_with_credentials")]
72 #[doc(alias = "new_with_credentials")]
73 pub fn with_credentials(credentials: &Credentials) -> UnixCredentialsMessage {
74 unsafe {
75 SocketControlMessage::from_glib_full(
76 ffi::g_unix_credentials_message_new_with_credentials(credentials.to_glib_none().0),
77 )
78 .unsafe_cast()
79 }
80 }
81
82 /// Checks if passing #GCredentials on a #GSocket is supported on this platform.
83 ///
84 /// # Returns
85 ///
86 /// [`true`] if supported, [`false`] otherwise
87 #[doc(alias = "g_unix_credentials_message_is_supported")]
88 pub fn is_supported() -> bool {
89 unsafe { from_glib(ffi::g_unix_credentials_message_is_supported()) }
90 }
91}
92
93impl Default for UnixCredentialsMessage {
94 fn default() -> Self {
95 Self::new()
96 }
97}
98
99mod sealed {
100 pub trait Sealed {}
101 impl<T: super::IsA<super::UnixCredentialsMessage>> Sealed for T {}
102}
103
104/// Trait containing all [`struct@UnixCredentialsMessage`] methods.
105///
106/// # Implementors
107///
108/// [`UnixCredentialsMessage`][struct@crate::UnixCredentialsMessage]
109pub trait UnixCredentialsMessageExt:
110 IsA<UnixCredentialsMessage> + sealed::Sealed + 'static
111{
112 /// Gets the credentials stored in @self.
113 ///
114 /// # Returns
115 ///
116 /// A #GCredentials instance. Do not free, it is owned by @self.
117 #[doc(alias = "g_unix_credentials_message_get_credentials")]
118 #[doc(alias = "get_credentials")]
119 fn credentials(&self) -> Credentials {
120 unsafe {
121 from_glib_none(ffi::g_unix_credentials_message_get_credentials(
122 self.as_ref().to_glib_none().0,
123 ))
124 }
125 }
126}
127
128impl<O: IsA<UnixCredentialsMessage>> UnixCredentialsMessageExt for O {}