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 {}