gio/auto/
network_address.rs1use crate::{ffi, SocketConnectable};
6use glib::{prelude::*, translate::*};
7
8glib::wrapper! {
9 #[doc(alias = "GNetworkAddress")]
10 pub struct NetworkAddress(Object<ffi::GNetworkAddress, ffi::GNetworkAddressClass>) @implements SocketConnectable;
11
12 match fn {
13 type_ => || ffi::g_network_address_get_type(),
14 }
15}
16
17impl NetworkAddress {
18 pub const NONE: Option<&'static NetworkAddress> = None;
19
20 #[doc(alias = "g_network_address_new")]
21 pub fn new(hostname: &str, port: u16) -> NetworkAddress {
22 unsafe { from_glib_full(ffi::g_network_address_new(hostname.to_glib_none().0, port)) }
23 }
24
25 #[doc(alias = "g_network_address_new_loopback")]
26 pub fn new_loopback(port: u16) -> NetworkAddress {
27 unsafe { from_glib_full(ffi::g_network_address_new_loopback(port)) }
28 }
29
30 #[doc(alias = "g_network_address_parse")]
31 pub fn parse(host_and_port: &str, default_port: u16) -> Result<NetworkAddress, glib::Error> {
32 unsafe {
33 let mut error = std::ptr::null_mut();
34 let ret = ffi::g_network_address_parse(
35 host_and_port.to_glib_none().0,
36 default_port,
37 &mut error,
38 );
39 if error.is_null() {
40 Ok(from_glib_full(ret))
41 } else {
42 Err(from_glib_full(error))
43 }
44 }
45 }
46
47 #[doc(alias = "g_network_address_parse_uri")]
48 pub fn parse_uri(uri: &str, default_port: u16) -> Result<NetworkAddress, glib::Error> {
49 unsafe {
50 let mut error = std::ptr::null_mut();
51 let ret =
52 ffi::g_network_address_parse_uri(uri.to_glib_none().0, default_port, &mut error);
53 if error.is_null() {
54 Ok(from_glib_full(ret))
55 } else {
56 Err(from_glib_full(error))
57 }
58 }
59 }
60}
61
62unsafe impl Send for NetworkAddress {}
63unsafe impl Sync for NetworkAddress {}
64
65pub trait NetworkAddressExt: IsA<NetworkAddress> + 'static {
66 #[doc(alias = "g_network_address_get_hostname")]
67 #[doc(alias = "get_hostname")]
68 fn hostname(&self) -> glib::GString {
69 unsafe {
70 from_glib_none(ffi::g_network_address_get_hostname(
71 self.as_ref().to_glib_none().0,
72 ))
73 }
74 }
75
76 #[doc(alias = "g_network_address_get_port")]
77 #[doc(alias = "get_port")]
78 fn port(&self) -> u16 {
79 unsafe { ffi::g_network_address_get_port(self.as_ref().to_glib_none().0) }
80 }
81
82 #[doc(alias = "g_network_address_get_scheme")]
83 #[doc(alias = "get_scheme")]
84 fn scheme(&self) -> Option<glib::GString> {
85 unsafe {
86 from_glib_none(ffi::g_network_address_get_scheme(
87 self.as_ref().to_glib_none().0,
88 ))
89 }
90 }
91}
92
93impl<O: IsA<NetworkAddress>> NetworkAddressExt for O {}