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
// 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;
use crate::SocketConnectable;
use crate::UnixSocketAddressType;
use glib::object::IsA;
use glib::translate::*;
use glib::StaticType;
use std::fmt;
glib::wrapper! {
/// Support for UNIX-domain (also known as local) sockets.
///
/// 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 [`IOErrorEnum::NotSupported`][crate::IOErrorEnum::NotSupported]
/// errors. You can use [`abstract_names_supported()`][Self::abstract_names_supported()]
/// to see if abstract names are supported.
///
/// Since GLib 2.72, [`UnixSocketAddress`][crate::UnixSocketAddress] 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.
///
/// # 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 {}
/// Trait containing all [`struct@UnixSocketAddress`] methods.
///
/// # Implementors
///
/// [`UnixSocketAddress`][struct@crate::UnixSocketAddress]
pub trait UnixSocketAddressExt: 'static {
/// Gets `self`'s type.
///
/// # Returns
///
/// a [`UnixSocketAddressType`][crate::UnixSocketAddressType]
#[doc(alias = "g_unix_socket_address_get_address_type")]
#[doc(alias = "get_address_type")]
fn address_type(&self) -> UnixSocketAddressType;
/// Tests if `self` is abstract.
///
/// # Deprecated
///
/// Use [`address_type()`][Self::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;
/// Gets the length of `self`'s path.
///
/// For details, see [`UnixSocketAddressExtManual::path()`][crate::prelude::UnixSocketAddressExtManual::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;
#[doc(alias = "path-as-array")]
fn path_as_array(&self) -> Option<glib::ByteArray>;
}
impl<O: IsA<UnixSocketAddress>> UnixSocketAddressExt for O {
fn address_type(&self) -> UnixSocketAddressType {
unsafe {
from_glib(ffi::g_unix_socket_address_get_address_type(
self.as_ref().to_glib_none().0,
))
}
}
fn is_abstract(&self) -> bool {
unsafe {
from_glib(ffi::g_unix_socket_address_get_is_abstract(
self.as_ref().to_glib_none().0,
))
}
}
fn path_len(&self) -> usize {
unsafe { ffi::g_unix_socket_address_get_path_len(self.as_ref().to_glib_none().0) }
}
fn path_as_array(&self) -> Option<glib::ByteArray> {
glib::ObjectExt::property(self.as_ref(), "path-as-array")
}
}
impl fmt::Display for UnixSocketAddress {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str("UnixSocketAddress")
}
}