summaryrefslogtreecommitdiffstats
path: root/vendor/core-foundation/src/mach_port.rs
blob: 6112e3aae01a66608427516576019ea691c83179 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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))
            }
        }
    }
}