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 { 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)) } } } }