use core::cell::UnsafeCell;
use core::ffi::*;
use core::marker::{PhantomData, PhantomPinned};
use core::ptr::NonNull;
#[cfg(feature = "dispatch2")]
use dispatch2::*;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use objc2_core_foundation::*;
use crate::*;
#[doc(alias = "SCNetworkConnectionRef")]
#[repr(C)]
pub struct SCNetworkConnection {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
cf_type!(
unsafe impl SCNetworkConnection {}
);
#[cfg(feature = "objc2")]
cf_objc2_type!(
unsafe impl RefEncode<"__SCNetworkConnection"> for SCNetworkConnection {}
);
#[repr(C)]
#[allow(unpredictable_function_pointer_comparisons)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SCNetworkConnectionContext {
pub version: CFIndex,
pub info: *mut c_void,
pub retain: Option<unsafe extern "C-unwind" fn(NonNull<c_void>) -> NonNull<c_void>>,
pub release: Option<unsafe extern "C-unwind" fn(NonNull<c_void>)>,
pub copyDescription: Option<unsafe extern "C-unwind" fn(NonNull<c_void>) -> NonNull<CFString>>,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for SCNetworkConnectionContext {
const ENCODING: Encoding = Encoding::Struct(
"?",
&[
<CFIndex>::ENCODING,
<*mut c_void>::ENCODING,
<Option<unsafe extern "C-unwind" fn(NonNull<c_void>) -> NonNull<c_void>>>::ENCODING,
<Option<unsafe extern "C-unwind" fn(NonNull<c_void>)>>::ENCODING,
<Option<unsafe extern "C-unwind" fn(NonNull<c_void>) -> NonNull<CFString>>>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for SCNetworkConnectionContext {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct SCNetworkConnectionStatus(pub i32);
impl SCNetworkConnectionStatus {
#[doc(alias = "kSCNetworkConnectionInvalid")]
pub const Invalid: Self = Self(-1);
#[doc(alias = "kSCNetworkConnectionDisconnected")]
pub const Disconnected: Self = Self(0);
#[doc(alias = "kSCNetworkConnectionConnecting")]
pub const Connecting: Self = Self(1);
#[doc(alias = "kSCNetworkConnectionConnected")]
pub const Connected: Self = Self(2);
#[doc(alias = "kSCNetworkConnectionDisconnecting")]
pub const Disconnecting: Self = Self(3);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for SCNetworkConnectionStatus {
const ENCODING: Encoding = i32::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for SCNetworkConnectionStatus {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct SCNetworkConnectionPPPStatus(pub i32);
impl SCNetworkConnectionPPPStatus {
#[doc(alias = "kSCNetworkConnectionPPPDisconnected")]
pub const Disconnected: Self = Self(0);
#[doc(alias = "kSCNetworkConnectionPPPInitializing")]
pub const Initializing: Self = Self(1);
#[doc(alias = "kSCNetworkConnectionPPPConnectingLink")]
pub const ConnectingLink: Self = Self(2);
#[doc(alias = "kSCNetworkConnectionPPPDialOnTraffic")]
pub const DialOnTraffic: Self = Self(3);
#[doc(alias = "kSCNetworkConnectionPPPNegotiatingLink")]
pub const NegotiatingLink: Self = Self(4);
#[doc(alias = "kSCNetworkConnectionPPPAuthenticating")]
pub const Authenticating: Self = Self(5);
#[doc(alias = "kSCNetworkConnectionPPPWaitingForCallBack")]
pub const WaitingForCallBack: Self = Self(6);
#[doc(alias = "kSCNetworkConnectionPPPNegotiatingNetwork")]
pub const NegotiatingNetwork: Self = Self(7);
#[doc(alias = "kSCNetworkConnectionPPPConnected")]
pub const Connected: Self = Self(8);
#[doc(alias = "kSCNetworkConnectionPPPTerminating")]
pub const Terminating: Self = Self(9);
#[doc(alias = "kSCNetworkConnectionPPPDisconnectingLink")]
pub const DisconnectingLink: Self = Self(10);
#[doc(alias = "kSCNetworkConnectionPPPHoldingLinkOff")]
pub const HoldingLinkOff: Self = Self(11);
#[doc(alias = "kSCNetworkConnectionPPPSuspended")]
pub const Suspended: Self = Self(12);
#[doc(alias = "kSCNetworkConnectionPPPWaitingForRedial")]
pub const WaitingForRedial: Self = Self(13);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for SCNetworkConnectionPPPStatus {
const ENCODING: Encoding = i32::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for SCNetworkConnectionPPPStatus {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
pub type SCNetworkConnectionCallBack = Option<
unsafe extern "C-unwind" fn(
NonNull<SCNetworkConnection>,
SCNetworkConnectionStatus,
*mut c_void,
),
>;
unsafe impl ConcreteType for SCNetworkConnection {
#[doc(alias = "SCNetworkConnectionGetTypeID")]
#[inline]
fn type_id() -> CFTypeID {
extern "C-unwind" {
fn SCNetworkConnectionGetTypeID() -> CFTypeID;
}
unsafe { SCNetworkConnectionGetTypeID() }
}
}
impl SCNetworkConnection {
#[doc(alias = "SCNetworkConnectionCopyUserPreferences")]
#[inline]
pub unsafe fn user_preferences(
selection_options: Option<&CFDictionary>,
service_id: NonNull<*const CFString>,
user_options: NonNull<*const CFDictionary>,
) -> bool {
extern "C-unwind" {
fn SCNetworkConnectionCopyUserPreferences(
selection_options: Option<&CFDictionary>,
service_id: NonNull<*const CFString>,
user_options: NonNull<*const CFDictionary>,
) -> Boolean;
}
let ret = unsafe {
SCNetworkConnectionCopyUserPreferences(selection_options, service_id, user_options)
};
ret != 0
}
#[doc(alias = "SCNetworkConnectionCreateWithServiceID")]
#[inline]
pub unsafe fn with_service_id(
allocator: Option<&CFAllocator>,
service_id: &CFString,
callout: SCNetworkConnectionCallBack,
context: *mut SCNetworkConnectionContext,
) -> Option<CFRetained<SCNetworkConnection>> {
extern "C-unwind" {
fn SCNetworkConnectionCreateWithServiceID(
allocator: Option<&CFAllocator>,
service_id: &CFString,
callout: SCNetworkConnectionCallBack,
context: *mut SCNetworkConnectionContext,
) -> Option<NonNull<SCNetworkConnection>>;
}
let ret = unsafe {
SCNetworkConnectionCreateWithServiceID(allocator, service_id, callout, context)
};
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "SCNetworkConnectionCopyServiceID")]
#[inline]
pub fn service_id(&self) -> Option<CFRetained<CFString>> {
extern "C-unwind" {
fn SCNetworkConnectionCopyServiceID(
connection: &SCNetworkConnection,
) -> Option<NonNull<CFString>>;
}
let ret = unsafe { SCNetworkConnectionCopyServiceID(self) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "SCNetworkConnectionGetStatus")]
#[inline]
pub fn status(&self) -> SCNetworkConnectionStatus {
extern "C-unwind" {
fn SCNetworkConnectionGetStatus(
connection: &SCNetworkConnection,
) -> SCNetworkConnectionStatus;
}
unsafe { SCNetworkConnectionGetStatus(self) }
}
#[doc(alias = "SCNetworkConnectionCopyExtendedStatus")]
#[inline]
pub fn extended_status(&self) -> Option<CFRetained<CFDictionary>> {
extern "C-unwind" {
fn SCNetworkConnectionCopyExtendedStatus(
connection: &SCNetworkConnection,
) -> Option<NonNull<CFDictionary>>;
}
let ret = unsafe { SCNetworkConnectionCopyExtendedStatus(self) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "SCNetworkConnectionCopyStatistics")]
#[inline]
pub fn statistics(&self) -> Option<CFRetained<CFDictionary>> {
extern "C-unwind" {
fn SCNetworkConnectionCopyStatistics(
connection: &SCNetworkConnection,
) -> Option<NonNull<CFDictionary>>;
}
let ret = unsafe { SCNetworkConnectionCopyStatistics(self) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "SCNetworkConnectionStart")]
#[inline]
pub unsafe fn start(&self, user_options: Option<&CFDictionary>, linger: bool) -> bool {
extern "C-unwind" {
fn SCNetworkConnectionStart(
connection: &SCNetworkConnection,
user_options: Option<&CFDictionary>,
linger: Boolean,
) -> Boolean;
}
let ret = unsafe { SCNetworkConnectionStart(self, user_options, linger as _) };
ret != 0
}
#[doc(alias = "SCNetworkConnectionStop")]
#[inline]
pub fn stop(&self, force_disconnect: bool) -> bool {
extern "C-unwind" {
fn SCNetworkConnectionStop(
connection: &SCNetworkConnection,
force_disconnect: Boolean,
) -> Boolean;
}
let ret = unsafe { SCNetworkConnectionStop(self, force_disconnect as _) };
ret != 0
}
#[doc(alias = "SCNetworkConnectionCopyUserOptions")]
#[inline]
pub fn user_options(&self) -> Option<CFRetained<CFDictionary>> {
extern "C-unwind" {
fn SCNetworkConnectionCopyUserOptions(
connection: &SCNetworkConnection,
) -> Option<NonNull<CFDictionary>>;
}
let ret = unsafe { SCNetworkConnectionCopyUserOptions(self) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "SCNetworkConnectionScheduleWithRunLoop")]
#[inline]
pub fn schedule_with_run_loop(&self, run_loop: &CFRunLoop, run_loop_mode: &CFString) -> bool {
extern "C-unwind" {
fn SCNetworkConnectionScheduleWithRunLoop(
connection: &SCNetworkConnection,
run_loop: &CFRunLoop,
run_loop_mode: &CFString,
) -> Boolean;
}
let ret = unsafe { SCNetworkConnectionScheduleWithRunLoop(self, run_loop, run_loop_mode) };
ret != 0
}
#[doc(alias = "SCNetworkConnectionUnscheduleFromRunLoop")]
#[inline]
pub fn unschedule_from_run_loop(&self, run_loop: &CFRunLoop, run_loop_mode: &CFString) -> bool {
extern "C-unwind" {
fn SCNetworkConnectionUnscheduleFromRunLoop(
connection: &SCNetworkConnection,
run_loop: &CFRunLoop,
run_loop_mode: &CFString,
) -> Boolean;
}
let ret =
unsafe { SCNetworkConnectionUnscheduleFromRunLoop(self, run_loop, run_loop_mode) };
ret != 0
}
#[doc(alias = "SCNetworkConnectionSetDispatchQueue")]
#[cfg(feature = "dispatch2")]
#[inline]
pub unsafe fn set_dispatch_queue(&self, queue: Option<&DispatchQueue>) -> bool {
extern "C-unwind" {
fn SCNetworkConnectionSetDispatchQueue(
connection: &SCNetworkConnection,
queue: Option<&DispatchQueue>,
) -> Boolean;
}
let ret = unsafe { SCNetworkConnectionSetDispatchQueue(self, queue) };
ret != 0
}
}
#[deprecated = "renamed to `SCNetworkConnection::user_preferences`"]
#[inline]
pub unsafe extern "C-unwind" fn SCNetworkConnectionCopyUserPreferences(
selection_options: Option<&CFDictionary>,
service_id: NonNull<*const CFString>,
user_options: NonNull<*const CFDictionary>,
) -> bool {
extern "C-unwind" {
fn SCNetworkConnectionCopyUserPreferences(
selection_options: Option<&CFDictionary>,
service_id: NonNull<*const CFString>,
user_options: NonNull<*const CFDictionary>,
) -> Boolean;
}
let ret = unsafe {
SCNetworkConnectionCopyUserPreferences(selection_options, service_id, user_options)
};
ret != 0
}
#[deprecated = "renamed to `SCNetworkConnection::with_service_id`"]
#[inline]
pub unsafe extern "C-unwind" fn SCNetworkConnectionCreateWithServiceID(
allocator: Option<&CFAllocator>,
service_id: &CFString,
callout: SCNetworkConnectionCallBack,
context: *mut SCNetworkConnectionContext,
) -> Option<CFRetained<SCNetworkConnection>> {
extern "C-unwind" {
fn SCNetworkConnectionCreateWithServiceID(
allocator: Option<&CFAllocator>,
service_id: &CFString,
callout: SCNetworkConnectionCallBack,
context: *mut SCNetworkConnectionContext,
) -> Option<NonNull<SCNetworkConnection>>;
}
let ret =
unsafe { SCNetworkConnectionCreateWithServiceID(allocator, service_id, callout, context) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `SCNetworkConnection::service_id`"]
#[inline]
pub extern "C-unwind" fn SCNetworkConnectionCopyServiceID(
connection: &SCNetworkConnection,
) -> Option<CFRetained<CFString>> {
extern "C-unwind" {
fn SCNetworkConnectionCopyServiceID(
connection: &SCNetworkConnection,
) -> Option<NonNull<CFString>>;
}
let ret = unsafe { SCNetworkConnectionCopyServiceID(connection) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `SCNetworkConnection::status`"]
#[inline]
pub extern "C-unwind" fn SCNetworkConnectionGetStatus(
connection: &SCNetworkConnection,
) -> SCNetworkConnectionStatus {
extern "C-unwind" {
fn SCNetworkConnectionGetStatus(
connection: &SCNetworkConnection,
) -> SCNetworkConnectionStatus;
}
unsafe { SCNetworkConnectionGetStatus(connection) }
}
#[deprecated = "renamed to `SCNetworkConnection::extended_status`"]
#[inline]
pub extern "C-unwind" fn SCNetworkConnectionCopyExtendedStatus(
connection: &SCNetworkConnection,
) -> Option<CFRetained<CFDictionary>> {
extern "C-unwind" {
fn SCNetworkConnectionCopyExtendedStatus(
connection: &SCNetworkConnection,
) -> Option<NonNull<CFDictionary>>;
}
let ret = unsafe { SCNetworkConnectionCopyExtendedStatus(connection) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `SCNetworkConnection::statistics`"]
#[inline]
pub extern "C-unwind" fn SCNetworkConnectionCopyStatistics(
connection: &SCNetworkConnection,
) -> Option<CFRetained<CFDictionary>> {
extern "C-unwind" {
fn SCNetworkConnectionCopyStatistics(
connection: &SCNetworkConnection,
) -> Option<NonNull<CFDictionary>>;
}
let ret = unsafe { SCNetworkConnectionCopyStatistics(connection) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `SCNetworkConnection::start`"]
#[inline]
pub unsafe extern "C-unwind" fn SCNetworkConnectionStart(
connection: &SCNetworkConnection,
user_options: Option<&CFDictionary>,
linger: bool,
) -> bool {
extern "C-unwind" {
fn SCNetworkConnectionStart(
connection: &SCNetworkConnection,
user_options: Option<&CFDictionary>,
linger: Boolean,
) -> Boolean;
}
let ret = unsafe { SCNetworkConnectionStart(connection, user_options, linger as _) };
ret != 0
}
#[deprecated = "renamed to `SCNetworkConnection::stop`"]
#[inline]
pub extern "C-unwind" fn SCNetworkConnectionStop(
connection: &SCNetworkConnection,
force_disconnect: bool,
) -> bool {
extern "C-unwind" {
fn SCNetworkConnectionStop(
connection: &SCNetworkConnection,
force_disconnect: Boolean,
) -> Boolean;
}
let ret = unsafe { SCNetworkConnectionStop(connection, force_disconnect as _) };
ret != 0
}
#[deprecated = "renamed to `SCNetworkConnection::user_options`"]
#[inline]
pub extern "C-unwind" fn SCNetworkConnectionCopyUserOptions(
connection: &SCNetworkConnection,
) -> Option<CFRetained<CFDictionary>> {
extern "C-unwind" {
fn SCNetworkConnectionCopyUserOptions(
connection: &SCNetworkConnection,
) -> Option<NonNull<CFDictionary>>;
}
let ret = unsafe { SCNetworkConnectionCopyUserOptions(connection) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `SCNetworkConnection::schedule_with_run_loop`"]
#[inline]
pub extern "C-unwind" fn SCNetworkConnectionScheduleWithRunLoop(
connection: &SCNetworkConnection,
run_loop: &CFRunLoop,
run_loop_mode: &CFString,
) -> bool {
extern "C-unwind" {
fn SCNetworkConnectionScheduleWithRunLoop(
connection: &SCNetworkConnection,
run_loop: &CFRunLoop,
run_loop_mode: &CFString,
) -> Boolean;
}
let ret =
unsafe { SCNetworkConnectionScheduleWithRunLoop(connection, run_loop, run_loop_mode) };
ret != 0
}
#[deprecated = "renamed to `SCNetworkConnection::unschedule_from_run_loop`"]
#[inline]
pub extern "C-unwind" fn SCNetworkConnectionUnscheduleFromRunLoop(
connection: &SCNetworkConnection,
run_loop: &CFRunLoop,
run_loop_mode: &CFString,
) -> bool {
extern "C-unwind" {
fn SCNetworkConnectionUnscheduleFromRunLoop(
connection: &SCNetworkConnection,
run_loop: &CFRunLoop,
run_loop_mode: &CFString,
) -> Boolean;
}
let ret =
unsafe { SCNetworkConnectionUnscheduleFromRunLoop(connection, run_loop, run_loop_mode) };
ret != 0
}
#[cfg(feature = "dispatch2")]
#[deprecated = "renamed to `SCNetworkConnection::set_dispatch_queue`"]
#[inline]
pub unsafe extern "C-unwind" fn SCNetworkConnectionSetDispatchQueue(
connection: &SCNetworkConnection,
queue: Option<&DispatchQueue>,
) -> bool {
extern "C-unwind" {
fn SCNetworkConnectionSetDispatchQueue(
connection: &SCNetworkConnection,
queue: Option<&DispatchQueue>,
) -> Boolean;
}
let ret = unsafe { SCNetworkConnectionSetDispatchQueue(connection, queue) };
ret != 0
}