diff options
Diffstat (limited to 'vendor/core-foundation/src/mach_port.rs')
-rw-r--r-- | vendor/core-foundation/src/mach_port.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/vendor/core-foundation/src/mach_port.rs b/vendor/core-foundation/src/mach_port.rs new file mode 100644 index 000000000..6112e3aae --- /dev/null +++ b/vendor/core-foundation/src/mach_port.rs @@ -0,0 +1,28 @@ +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)) + } + } + } +} |