use objc2::__framework_prelude::*;
use crate::*;
pub type NSSocketNativeHandle = c_int;
extern "C" {
#[cfg(all(feature = "NSNotification", feature = "NSString"))]
pub static NSPortDidBecomeInvalidNotification: &'static NSNotificationName;
}
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct NSPort;
unsafe impl ClassType for NSPort {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "NSObject")]
unsafe impl NSCoding for NSPort {}
#[cfg(feature = "NSObject")]
unsafe impl NSCopying for NSPort {}
unsafe impl NSObjectProtocol for NSPort {}
extern_methods!(
unsafe impl NSPort {
#[method_id(@__retain_semantics Other port)]
pub unsafe fn port() -> Retained<NSPort>;
#[method(invalidate)]
pub unsafe fn invalidate(&self);
#[method(isValid)]
pub unsafe fn isValid(&self) -> bool;
#[method(setDelegate:)]
pub unsafe fn setDelegate(&self, an_object: Option<&ProtocolObject<dyn NSPortDelegate>>);
#[method_id(@__retain_semantics Other delegate)]
pub unsafe fn delegate(&self) -> Option<Retained<ProtocolObject<dyn NSPortDelegate>>>;
#[cfg(all(feature = "NSObjCRuntime", feature = "NSRunLoop", feature = "NSString"))]
#[method(scheduleInRunLoop:forMode:)]
pub unsafe fn scheduleInRunLoop_forMode(&self, run_loop: &NSRunLoop, mode: &NSRunLoopMode);
#[cfg(all(feature = "NSObjCRuntime", feature = "NSRunLoop", feature = "NSString"))]
#[method(removeFromRunLoop:forMode:)]
pub unsafe fn removeFromRunLoop_forMode(&self, run_loop: &NSRunLoop, mode: &NSRunLoopMode);
#[method(reservedSpaceLength)]
pub unsafe fn reservedSpaceLength(&self) -> NSUInteger;
#[cfg(all(feature = "NSArray", feature = "NSDate"))]
#[method(sendBeforeDate:components:from:reserved:)]
pub unsafe fn sendBeforeDate_components_from_reserved(
&self,
limit_date: &NSDate,
components: Option<&NSMutableArray>,
receive_port: Option<&NSPort>,
header_space_reserved: NSUInteger,
) -> bool;
#[cfg(all(feature = "NSArray", feature = "NSDate"))]
#[method(sendBeforeDate:msgid:components:from:reserved:)]
pub unsafe fn sendBeforeDate_msgid_components_from_reserved(
&self,
limit_date: &NSDate,
msg_id: NSUInteger,
components: Option<&NSMutableArray>,
receive_port: Option<&NSPort>,
header_space_reserved: NSUInteger,
) -> bool;
#[cfg(all(
feature = "NSConnection",
feature = "NSObjCRuntime",
feature = "NSRunLoop",
feature = "NSString"
))]
#[deprecated = "Use NSXPCConnection instead"]
#[method(addConnection:toRunLoop:forMode:)]
pub unsafe fn addConnection_toRunLoop_forMode(
&self,
conn: &NSConnection,
run_loop: &NSRunLoop,
mode: &NSRunLoopMode,
);
#[cfg(all(
feature = "NSConnection",
feature = "NSObjCRuntime",
feature = "NSRunLoop",
feature = "NSString"
))]
#[deprecated = "Use NSXPCConnection instead"]
#[method(removeConnection:fromRunLoop:forMode:)]
pub unsafe fn removeConnection_fromRunLoop_forMode(
&self,
conn: &NSConnection,
run_loop: &NSRunLoop,
mode: &NSRunLoopMode,
);
}
);
extern_methods!(
unsafe impl NSPort {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);
extern_protocol!(
pub unsafe trait NSPortDelegate: NSObjectProtocol {
#[cfg(feature = "NSPortMessage")]
#[optional]
#[method(handlePortMessage:)]
unsafe fn handlePortMessage(&self, message: &NSPortMessage);
}
unsafe impl ProtocolType for dyn NSPortDelegate {}
);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct NSMachPortOptions(pub NSUInteger);
bitflags::bitflags! {
impl NSMachPortOptions: NSUInteger {
const NSMachPortDeallocateNone = 0;
const NSMachPortDeallocateSendRight = 1<<0;
const NSMachPortDeallocateReceiveRight = 1<<1;
}
}
unsafe impl Encode for NSMachPortOptions {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for NSMachPortOptions {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct NSMachPort;
unsafe impl ClassType for NSMachPort {
#[inherits(NSObject)]
type Super = NSPort;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "NSObject")]
unsafe impl NSCoding for NSMachPort {}
#[cfg(feature = "NSObject")]
unsafe impl NSCopying for NSMachPort {}
unsafe impl NSObjectProtocol for NSMachPort {}
extern_methods!(
unsafe impl NSMachPort {
#[method_id(@__retain_semantics Other portWithMachPort:)]
pub unsafe fn portWithMachPort(mach_port: u32) -> Retained<NSPort>;
#[method_id(@__retain_semantics Init initWithMachPort:)]
pub unsafe fn initWithMachPort(this: Allocated<Self>, mach_port: u32) -> Retained<Self>;
#[method(setDelegate:)]
pub unsafe fn setDelegate(
&self,
an_object: Option<&ProtocolObject<dyn NSMachPortDelegate>>,
);
#[method_id(@__retain_semantics Other delegate)]
pub unsafe fn delegate(&self) -> Option<Retained<ProtocolObject<dyn NSMachPortDelegate>>>;
#[method_id(@__retain_semantics Other portWithMachPort:options:)]
pub unsafe fn portWithMachPort_options(
mach_port: u32,
f: NSMachPortOptions,
) -> Retained<NSPort>;
#[method_id(@__retain_semantics Init initWithMachPort:options:)]
pub unsafe fn initWithMachPort_options(
this: Allocated<Self>,
mach_port: u32,
f: NSMachPortOptions,
) -> Retained<Self>;
#[method(machPort)]
pub unsafe fn machPort(&self) -> u32;
#[cfg(all(feature = "NSObjCRuntime", feature = "NSRunLoop", feature = "NSString"))]
#[method(scheduleInRunLoop:forMode:)]
pub unsafe fn scheduleInRunLoop_forMode(&self, run_loop: &NSRunLoop, mode: &NSRunLoopMode);
#[cfg(all(feature = "NSObjCRuntime", feature = "NSRunLoop", feature = "NSString"))]
#[method(removeFromRunLoop:forMode:)]
pub unsafe fn removeFromRunLoop_forMode(&self, run_loop: &NSRunLoop, mode: &NSRunLoopMode);
}
);
extern_methods!(
unsafe impl NSMachPort {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);
extern_protocol!(
pub unsafe trait NSMachPortDelegate: NSPortDelegate {
#[optional]
#[method(handleMachMessage:)]
unsafe fn handleMachMessage(&self, msg: NonNull<c_void>);
}
unsafe impl ProtocolType for dyn NSMachPortDelegate {}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct NSMessagePort;
unsafe impl ClassType for NSMessagePort {
#[inherits(NSObject)]
type Super = NSPort;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "NSObject")]
unsafe impl NSCoding for NSMessagePort {}
#[cfg(feature = "NSObject")]
unsafe impl NSCopying for NSMessagePort {}
unsafe impl NSObjectProtocol for NSMessagePort {}
extern_methods!(
unsafe impl NSMessagePort {}
);
extern_methods!(
unsafe impl NSMessagePort {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct NSSocketPort;
unsafe impl ClassType for NSSocketPort {
#[inherits(NSObject)]
type Super = NSPort;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "NSObject")]
unsafe impl NSCoding for NSSocketPort {}
#[cfg(feature = "NSObject")]
unsafe impl NSCopying for NSSocketPort {}
unsafe impl NSObjectProtocol for NSSocketPort {}
extern_methods!(
unsafe impl NSSocketPort {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics Init initWithTCPPort:)]
pub unsafe fn initWithTCPPort(
this: Allocated<Self>,
port: c_ushort,
) -> Option<Retained<Self>>;
#[cfg(feature = "NSData")]
#[method_id(@__retain_semantics Init initWithProtocolFamily:socketType:protocol:address:)]
pub unsafe fn initWithProtocolFamily_socketType_protocol_address(
this: Allocated<Self>,
family: c_int,
r#type: c_int,
protocol: c_int,
address: &NSData,
) -> Option<Retained<Self>>;
#[method_id(@__retain_semantics Init initWithProtocolFamily:socketType:protocol:socket:)]
pub unsafe fn initWithProtocolFamily_socketType_protocol_socket(
this: Allocated<Self>,
family: c_int,
r#type: c_int,
protocol: c_int,
sock: NSSocketNativeHandle,
) -> Option<Retained<Self>>;
#[cfg(feature = "NSString")]
#[method_id(@__retain_semantics Init initRemoteWithTCPPort:host:)]
pub unsafe fn initRemoteWithTCPPort_host(
this: Allocated<Self>,
port: c_ushort,
host_name: Option<&NSString>,
) -> Option<Retained<Self>>;
#[cfg(feature = "NSData")]
#[method_id(@__retain_semantics Init initRemoteWithProtocolFamily:socketType:protocol:address:)]
pub unsafe fn initRemoteWithProtocolFamily_socketType_protocol_address(
this: Allocated<Self>,
family: c_int,
r#type: c_int,
protocol: c_int,
address: &NSData,
) -> Retained<Self>;
#[method(protocolFamily)]
pub unsafe fn protocolFamily(&self) -> c_int;
#[method(socketType)]
pub unsafe fn socketType(&self) -> c_int;
#[method(protocol)]
pub unsafe fn protocol(&self) -> c_int;
#[cfg(feature = "NSData")]
#[method_id(@__retain_semantics Other address)]
pub unsafe fn address(&self) -> Retained<NSData>;
#[method(socket)]
pub unsafe fn socket(&self) -> NSSocketNativeHandle;
}
);
extern_methods!(
unsafe impl NSSocketPort {
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);