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