core-foundation: Add basic CFMachPort

This commit is contained in:
Asaf Fisher
2021-01-22 01:53:25 +02:00
parent 48dd601e3c
commit edb187a17c
4 changed files with 50 additions and 0 deletions
+1
View File
@@ -233,3 +233,4 @@ pub mod propertylist;
pub mod runloop;
pub mod timezone;
pub mod uuid;
pub mod mach_port;
+28
View File
@@ -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))
}
}
}
}