core_foundation_sys/
notification_center.rs1use std::os::raw::c_void;
11
12use crate::base::{Boolean, CFIndex, CFOptionFlags, CFTypeID};
13use crate::dictionary::CFDictionaryRef;
14use crate::string::CFStringRef;
15
16#[repr(C)]
17pub struct __CFNotificationCenter(c_void);
18
19pub type CFNotificationCenterRef = *mut __CFNotificationCenter;
20
21pub type CFNotificationName = CFStringRef;
22pub type CFNotificationCallback = extern "C" fn(
23 center: CFNotificationCenterRef,
24 observer: *mut c_void,
25 name: CFNotificationName,
26 object: *const c_void,
27 userInfo: CFDictionaryRef,
28);
29pub type CFNotificationSuspensionBehavior = CFIndex;
30
31pub const CFNotificationSuspensionBehaviorDrop: CFNotificationSuspensionBehavior = 1;
32pub const CFNotificationSuspensionBehaviorCoalesce: CFNotificationSuspensionBehavior = 2;
33pub const CFNotificationSuspensionBehaviorHold: CFNotificationSuspensionBehavior = 3;
34pub const CFNotificationSuspensionBehaviorDeliverImmediately: CFNotificationSuspensionBehavior = 4;
35
36pub const kCFNotificationDeliverImmediately: CFOptionFlags = 1usize << 0;
38pub const kCFNotificationPostToAllSessions: CFOptionFlags = 1usize << 1;
39
40extern "C" {
41 pub fn CFNotificationCenterGetDarwinNotifyCenter() -> CFNotificationCenterRef;
47 #[cfg(any(target_os = "macos", target_os = "windows"))]
48 pub fn CFNotificationCenterGetDistributedCenter() -> CFNotificationCenterRef;
49 pub fn CFNotificationCenterGetLocalCenter() -> CFNotificationCenterRef;
50
51 pub fn CFNotificationCenterPostNotification(
53 center: CFNotificationCenterRef,
54 name: CFNotificationName,
55 object: *const c_void,
56 userInfo: CFDictionaryRef,
57 deliverImmediately: Boolean,
58 );
59 pub fn CFNotificationCenterPostNotificationWithOptions(
60 center: CFNotificationCenterRef,
61 name: CFNotificationName,
62 object: *const c_void,
63 userInfo: CFDictionaryRef,
64 options: CFOptionFlags,
65 );
66
67 pub fn CFNotificationCenterAddObserver(
69 center: CFNotificationCenterRef,
70 observer: *const c_void,
71 callBack: CFNotificationCallback,
72 name: CFStringRef,
73 object: *const c_void,
74 suspensionBehavior: CFNotificationSuspensionBehavior,
75 );
76 pub fn CFNotificationCenterRemoveEveryObserver(
77 center: CFNotificationCenterRef,
78 observer: *const c_void,
79 );
80 pub fn CFNotificationCenterRemoveObserver(
81 center: CFNotificationCenterRef,
82 observer: *const c_void,
83 name: CFNotificationName,
84 object: *const c_void,
85 );
86
87 pub fn CFNotificationCenterGetTypeID() -> CFTypeID;
89}