1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT
use crate::{SocketAddress, SocketConnectable, UnixSocketAddressType};
use glib::{prelude::*, translate::*};
glib::wrapper! {
/// Support for UNIX-domain (also known as local) sockets, corresponding to
/// `struct sockaddr_un`.
///
/// UNIX domain sockets are generally visible in the filesystem.
/// However, some systems support abstract socket names which are not
/// visible in the filesystem and not affected by the filesystem
/// permissions, visibility, etc. Currently this is only supported
/// under Linux. If you attempt to use abstract sockets on other
/// systems, function calls may return `G_IO_ERROR_NOT_SUPPORTED`
/// errors. You can use [`abstract_names_supported()`][Self::abstract_names_supported()]
/// to see if abstract names are supported.
///
/// Since GLib 2.72, `GUnixSocketAddress` is available on all platforms. It
/// requires underlying system support (such as Windows 10 with `AF_UNIX`) at
/// run time.
///
/// Before GLib 2.72, `<gio/gunixsocketaddress.h>` belonged to the UNIX-specific
/// GIO interfaces, thus you had to use the `gio-unix-2.0.pc` pkg-config file
/// when using it. This is no longer necessary since GLib 2.72.
///
/// ## Properties
///
///
/// #### `abstract`
/// Whether or not this is an abstract address
///
/// Readable | Writeable | Construct Only
///
///
/// #### `address-type`
/// The type of Unix socket address.
///
/// Readable | Writeable | Construct Only
///
///
/// #### `path`
/// Unix socket path.
///
/// Readable | Writeable | Construct Only
///
///
/// #### `path-as-array`
/// Unix socket path, as a byte array.
///
/// Readable | Writeable | Construct Only
/// <details><summary><h4>SocketAddress</h4></summary>
///
///
/// #### `family`
/// The family of the socket address.
///
/// Readable
/// </details>
///
/// # Implements
///
/// [`UnixSocketAddressExt`][trait@crate::prelude::UnixSocketAddressExt], [`SocketAddressExt`][trait@crate::prelude::SocketAddressExt], [`trait@glib::ObjectExt`], [`SocketConnectableExt`][trait@crate::prelude::SocketConnectableExt], [`UnixSocketAddressExtManual`][trait@crate::prelude::UnixSocketAddressExtManual]
#[doc(alias = "GUnixSocketAddress")]
pub struct UnixSocketAddress(Object<ffi::GUnixSocketAddress, ffi::GUnixSocketAddressClass>) @extends SocketAddress, @implements SocketConnectable;
match fn {
type_ => || ffi::g_unix_socket_address_get_type(),
}
}
impl UnixSocketAddress {
pub const NONE: Option<&'static UnixSocketAddress> = None;
//#[doc(alias = "g_unix_socket_address_new_abstract")]
//pub fn new_abstract(path: /*Unimplemented*/&CArray TypeId { ns_id: 0, id: 10 }) -> UnixSocketAddress {
// unsafe { TODO: call ffi:g_unix_socket_address_new_abstract() }
//}
//#[doc(alias = "g_unix_socket_address_new_with_type")]
//#[doc(alias = "new_with_type")]
//pub fn with_type(path: /*Unimplemented*/&CArray TypeId { ns_id: 0, id: 10 }, type_: UnixSocketAddressType) -> UnixSocketAddress {
// unsafe { TODO: call ffi:g_unix_socket_address_new_with_type() }
//}
/// Checks if abstract UNIX domain socket names are supported.
///
/// # Returns
///
/// [`true`] if supported, [`false`] otherwise
#[doc(alias = "g_unix_socket_address_abstract_names_supported")]
pub fn abstract_names_supported() -> bool {
unsafe { from_glib(ffi::g_unix_socket_address_abstract_names_supported()) }
}
}
unsafe impl Send for UnixSocketAddress {}
unsafe impl Sync for UnixSocketAddress {}
mod sealed {
pub trait Sealed {}
impl<T: super::IsA<super::UnixSocketAddress>> Sealed for T {}
}
/// Trait containing all [`struct@UnixSocketAddress`] methods.
///
/// # Implementors
///
/// [`UnixSocketAddress`][struct@crate::UnixSocketAddress]
pub trait UnixSocketAddressExt: IsA<UnixSocketAddress> + sealed::Sealed + 'static {
/// Gets @self's type.
///
/// # Returns
///
/// a #GUnixSocketAddressType
#[doc(alias = "g_unix_socket_address_get_address_type")]
#[doc(alias = "get_address_type")]
fn address_type(&self) -> UnixSocketAddressType {
unsafe {
from_glib(ffi::g_unix_socket_address_get_address_type(
self.as_ref().to_glib_none().0,
))
}
}
/// Tests if @self is abstract.
///
/// # Deprecated
///
/// Use g_unix_socket_address_get_address_type()
///
/// # Returns
///
/// [`true`] if the address is abstract, [`false`] otherwise
#[doc(alias = "g_unix_socket_address_get_is_abstract")]
#[doc(alias = "get_is_abstract")]
fn is_abstract(&self) -> bool {
unsafe {
from_glib(ffi::g_unix_socket_address_get_is_abstract(
self.as_ref().to_glib_none().0,
))
}
}
/// Gets the length of @self's path.
///
/// For details, see g_unix_socket_address_get_path().
///
/// # Returns
///
/// the length of the path
#[doc(alias = "g_unix_socket_address_get_path_len")]
#[doc(alias = "get_path_len")]
fn path_len(&self) -> usize {
unsafe { ffi::g_unix_socket_address_get_path_len(self.as_ref().to_glib_none().0) }
}
/// Unix socket path, as a byte array.
#[doc(alias = "path-as-array")]
fn path_as_array(&self) -> Option<glib::ByteArray> {
ObjectExt::property(self.as_ref(), "path-as-array")
}
}
impl<O: IsA<UnixSocketAddress>> UnixSocketAddressExt for O {}