From 3aa97e2abea698e30bc48a8ff6f14b46fca13aba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Linus=20F=C3=A4rnstrand?= Date: Sun, 21 Jan 2018 16:32:35 +0100 Subject: [PATCH] Move CFRunLoopSource method to runloop.rs --- core-foundation/src/filedescriptor.rs | 32 ++++++++++++++------------- core-foundation/src/runloop.rs | 7 ++++++ 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/core-foundation/src/filedescriptor.rs b/core-foundation/src/filedescriptor.rs index 8794db2..4736480 100644 --- a/core-foundation/src/filedescriptor.rs +++ b/core-foundation/src/filedescriptor.rs @@ -3,7 +3,8 @@ pub use core_foundation_sys::filedescriptor::*; use core_foundation_sys::base::{Boolean, CFIndex, CFRelease}; use core_foundation_sys::base::{kCFAllocatorDefault, CFOptionFlags}; -use base::{TCFType}; +use base::TCFType; +use runloop::CFRunLoopSource; use std::mem; use std::os::unix::io::{AsRawFd, RawFd}; @@ -72,6 +73,21 @@ impl CFFileDescriptor { CFFileDescriptorInvalidate(self.0) } } + + pub fn to_run_loop_source(&self, order: CFIndex) -> Option { + unsafe { + let source_ref = CFFileDescriptorCreateRunLoopSource( + kCFAllocatorDefault, + self.0, + order + ); + if source_ref.is_null() { + None + } else { + Some(TCFType::wrap_under_create_rule(source_ref)) + } + } + } } impl AsRawFd for CFFileDescriptor { @@ -82,20 +98,6 @@ impl AsRawFd for CFFileDescriptor { } } -use runloop::{CFRunLoopSource}; - -impl CFRunLoopSource { - pub fn from_file_descriptor(fd: &CFFileDescriptor, order: CFIndex) -> Option { - unsafe { - let source_ref = CFFileDescriptorCreateRunLoopSource(kCFAllocatorDefault, fd.0, order); - if source_ref.is_null() { - None - } else { - Some(TCFType::wrap_under_create_rule(source_ref)) - } - } - } -} #[cfg(test)] mod test { diff --git a/core-foundation/src/runloop.rs b/core-foundation/src/runloop.rs index 5a12c21..145ca5b 100644 --- a/core-foundation/src/runloop.rs +++ b/core-foundation/src/runloop.rs @@ -16,6 +16,7 @@ use core_foundation_sys::string::CFStringRef; use base::{TCFType}; use date::{CFAbsoluteTime, CFTimeInterval}; +use filedescriptor::CFFileDescriptor; use string::{CFString}; pub type CFRunLoopMode = CFStringRef; @@ -137,6 +138,12 @@ impl CFRunLoopTimer { declare_TCFType!(CFRunLoopSource, CFRunLoopSourceRef); impl_TCFType!(CFRunLoopSource, CFRunLoopSourceRef, CFRunLoopSourceGetTypeID); +impl CFRunLoopSource { + pub fn from_file_descriptor(fd: &CFFileDescriptor, order: CFIndex) -> Option { + fd.to_run_loop_source(order) + } +} + declare_TCFType!(CFRunLoopObserver, CFRunLoopObserverRef); impl_TCFType!(CFRunLoopObserver, CFRunLoopObserverRef, CFRunLoopObserverGetTypeID);