29 lines
788 B
Rust
29 lines
788 B
Rust
use base::TCFType;
|
|
use core_foundation_sys::base::kCFAllocatorDefault;
|
|
use runloop::CFRunLoopSource;
|
|
pub use core_foundation_sys::mach_port::*;
|
|
|
|
|
|
declare_TCFType! {
|
|
/// An immutable numeric value.
|
|
CFMachPort, CFMachPortRef
|
|
}
|
|
impl_TCFType!(CFMachPort, CFMachPortRef, CFMachPortGetTypeID);
|
|
impl_CFTypeDescription!(CFMachPort);
|
|
|
|
impl CFMachPort {
|
|
pub fn create_runloop_source(
|
|
&self,
|
|
order: CFIndex,
|
|
) -> Result<CFRunLoopSource, ()> {
|
|
unsafe {
|
|
let runloop_source_ref = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, self.0, order);
|
|
if runloop_source_ref.is_null() {
|
|
Err(())
|
|
} else {
|
|
Ok(CFRunLoopSource::wrap_under_create_rule(runloop_source_ref))
|
|
}
|
|
}
|
|
}
|
|
}
|