1use std::ffi::CStr;
15
16use once_cell::sync::Lazy;
17
18macro_rules! key_constant {
20 ($name:ident, $pw_symbol:ident, #[doc = $doc:expr]) => {
21 #[doc = $doc]
22 pub static $name: Lazy<&'static str> = Lazy::new(|| unsafe {
23 CStr::from_bytes_with_nul_unchecked(pw_sys::$pw_symbol)
24 .to_str()
25 .unwrap()
26 });
27 };
28}
29
30key_constant!(PROTOCOL, PW_KEY_PROTOCOL,
31 );
33key_constant!(ACCESS, PW_KEY_ACCESS,
34 );
36key_constant!(CLIENT_ACCESS, PW_KEY_CLIENT_ACCESS,
37 );
39key_constant!(SEC_PID, PW_KEY_SEC_PID,
40 );
42key_constant!(SEC_UID, PW_KEY_SEC_UID,
43 );
45key_constant!(SEC_GID, PW_KEY_SEC_GID,
46 );
48key_constant!(SEC_LABEL, PW_KEY_SEC_LABEL,
49 );
51key_constant!(LIBRARY_NAME_SYSTEM, PW_KEY_LIBRARY_NAME_SYSTEM,
52 );
54key_constant!(LIBRARY_NAME_LOOP, PW_KEY_LIBRARY_NAME_LOOP,
55 );
57key_constant!(LIBRARY_NAME_DBUS, PW_KEY_LIBRARY_NAME_DBUS,
58 );
60key_constant!(OBJECT_PATH, PW_KEY_OBJECT_PATH,
61 );
63key_constant!(OBJECT_ID, PW_KEY_OBJECT_ID,
64 );
66#[cfg(feature = "v0_3_41")]
67key_constant!(OBJECT_SERIAL, PW_KEY_OBJECT_SERIAL,
68 );
70key_constant!(OBJECT_LINGER, PW_KEY_OBJECT_LINGER,
71 );
73#[cfg(feature = "v0_3_32")]
74key_constant!(OBJECT_REGISTER, PW_KEY_OBJECT_REGISTER,
75 );
77key_constant!(CONFIG_PREFIX, PW_KEY_CONFIG_PREFIX,
78 );
80key_constant!(CONFIG_NAME, PW_KEY_CONFIG_NAME,
81 );
83#[cfg(feature = "v0_3_57")]
84key_constant!(CONFIG_OVERRIDE_PREFIX, PW_KEY_CONFIG_OVERRIDE_PREFIX,
85 );
87#[cfg(feature = "v0_3_57")]
88key_constant!(CONFIG_OVERRIDE_NAME, PW_KEY_CONFIG_OVERRIDE_NAME,
89 );
91key_constant!(CONTEXT_PROFILE_MODULES, PW_KEY_CONTEXT_PROFILE_MODULES,
92 );
94key_constant!(USER_NAME, PW_KEY_USER_NAME,
95 );
97key_constant!(HOST_NAME, PW_KEY_HOST_NAME,
98 );
100key_constant!(CORE_NAME, PW_KEY_CORE_NAME,
101 );
103key_constant!(CORE_VERSION, PW_KEY_CORE_VERSION,
104 );
106key_constant!(CORE_DAEMON, PW_KEY_CORE_DAEMON,
107 );
109key_constant!(CORE_ID, PW_KEY_CORE_ID,
110 );
112key_constant!(CORE_MONITORS, PW_KEY_CORE_MONITORS,
113 );
115key_constant!(CPU_MAX_ALIGN, PW_KEY_CPU_MAX_ALIGN,
116 );
118key_constant!(CPU_CORES, PW_KEY_CPU_CORES,
119 );
121key_constant!(PRIORITY_SESSION, PW_KEY_PRIORITY_SESSION,
122 );
124key_constant!(PRIORITY_DRIVER, PW_KEY_PRIORITY_DRIVER,
125 );
127key_constant!(REMOTE_NAME, PW_KEY_REMOTE_NAME,
128 );
130key_constant!(REMOTE_INTENTION, PW_KEY_REMOTE_INTENTION,
131 );
133key_constant!(APP_NAME, PW_KEY_APP_NAME,
134 );
136key_constant!(APP_ID, PW_KEY_APP_ID,
137 );
139key_constant!(APP_VERSION, PW_KEY_APP_VERSION,
140 );
142key_constant!(APP_ICON, PW_KEY_APP_ICON,
143 );
145key_constant!(APP_ICON_NAME, PW_KEY_APP_ICON_NAME,
146 );
148key_constant!(APP_LANGUAGE, PW_KEY_APP_LANGUAGE,
149 );
151key_constant!(APP_PROCESS_ID, PW_KEY_APP_PROCESS_ID,
152 );
154key_constant!(APP_PROCESS_BINARY, PW_KEY_APP_PROCESS_BINARY,
155 );
157key_constant!(APP_PROCESS_USER, PW_KEY_APP_PROCESS_USER,
158 );
160key_constant!(APP_PROCESS_HOST, PW_KEY_APP_PROCESS_HOST,
161 );
163key_constant!(APP_PROCESS_MACHINE_ID, PW_KEY_APP_PROCESS_MACHINE_ID,
164 );
166key_constant!(APP_PROCESS_SESSION_ID, PW_KEY_APP_PROCESS_SESSION_ID,
167 );
169key_constant!(WINDOW_X11_DISPLAY, PW_KEY_WINDOW_X11_DISPLAY,
170 );
172key_constant!(CLIENT_ID, PW_KEY_CLIENT_ID,
173 );
175key_constant!(CLIENT_NAME, PW_KEY_CLIENT_NAME,
176 );
178key_constant!(CLIENT_API, PW_KEY_CLIENT_API,
179 );
181key_constant!(NODE_ID, PW_KEY_NODE_ID,
182 );
184key_constant!(NODE_NAME, PW_KEY_NODE_NAME,
185 );
187key_constant!(NODE_NICK, PW_KEY_NODE_NICK,
188 );
190key_constant!(NODE_DESCRIPTION, PW_KEY_NODE_DESCRIPTION,
191 );
193key_constant!(NODE_PLUGGED, PW_KEY_NODE_PLUGGED,
194 );
196key_constant!(NODE_SESSION, PW_KEY_NODE_SESSION,
197 );
199key_constant!(NODE_GROUP, PW_KEY_NODE_GROUP,
200 );
202key_constant!(NODE_EXCLUSIVE, PW_KEY_NODE_EXCLUSIVE,
203 );
205key_constant!(NODE_AUTOCONNECT, PW_KEY_NODE_AUTOCONNECT,
206 );
208key_constant!(NODE_LATENCY, PW_KEY_NODE_LATENCY,
209 );
211key_constant!(NODE_MAX_LATENCY, PW_KEY_NODE_MAX_LATENCY,
212 );
214#[cfg(feature = "v0_3_33")]
215key_constant!(NODE_LOCK_QUANTUM, PW_KEY_NODE_LOCK_QUANTUM,
216 );
218#[cfg(feature = "v0_3_45")]
219key_constant!(NODE_FORCE_QUANTUM, PW_KEY_NODE_FORCE_QUANTUM,
220 );
222#[cfg(feature = "v0_3_33")]
223key_constant!(NODE_RATE, PW_KEY_NODE_RATE,
224 );
226#[cfg(feature = "v0_3_33")]
227key_constant!(NODE_LOCK_RATE, PW_KEY_NODE_LOCK_RATE,
228 );
230#[cfg(feature = "v0_3_45")]
231key_constant!(NODE_FORCE_RATE, PW_KEY_NODE_FORCE_RATE,
232 );
234key_constant!(NODE_DONT_RECONNECT, PW_KEY_NODE_DONT_RECONNECT,
235 );
237key_constant!(NODE_ALWAYS_PROCESS, PW_KEY_NODE_ALWAYS_PROCESS,
238 );
240#[cfg(feature = "v0_3_33")]
241key_constant!(NODE_WANT_DRIVER, PW_KEY_NODE_WANT_DRIVER,
242 );
244key_constant!(NODE_PAUSE_ON_IDLE, PW_KEY_NODE_PAUSE_ON_IDLE,
245 );
247#[cfg(feature = "v0_3_44")]
248key_constant!(NODE_SUSPEND_ON_IDLE, PW_KEY_NODE_SUSPEND_ON_IDLE,
249 );
251key_constant!(NODE_CACHE_PARAMS, PW_KEY_NODE_CACHE_PARAMS,
252 );
254#[cfg(feature = "v0_3_44")]
255key_constant!(NODE_TRANSPORT_SYNC, PW_KEY_NODE_TRANSPORT_SYNC,
256 );
258key_constant!(NODE_DRIVER, PW_KEY_NODE_DRIVER,
259 );
261key_constant!(NODE_STREAM, PW_KEY_NODE_STREAM,
262 );
264key_constant!(NODE_VIRTUAL, PW_KEY_NODE_VIRTUAL,
265 );
267key_constant!(NODE_PASSIVE, PW_KEY_NODE_PASSIVE,
268 );
270#[cfg(feature = "v0_3_32")]
271key_constant!(NODE_LINK_GROUP, PW_KEY_NODE_LINK_GROUP,
272 );
274#[cfg(feature = "v0_3_39")]
275key_constant!(NODE_NETWORK, PW_KEY_NODE_NETWORK,
276 );
278#[cfg(feature = "v0_3_41")]
279key_constant!(NODE_TRIGGER, PW_KEY_NODE_TRIGGER,
280 );
282#[cfg(feature = "v0_3_64")]
283key_constant!(NODE_CHANNELNAMES, PW_KEY_NODE_CHANNELNAMES,
284 );
286key_constant!(PORT_ID, PW_KEY_PORT_ID,
287 );
289key_constant!(PORT_NAME, PW_KEY_PORT_NAME,
290 );
292key_constant!(PORT_DIRECTION, PW_KEY_PORT_DIRECTION,
293 );
295key_constant!(PORT_ALIAS, PW_KEY_PORT_ALIAS,
296 );
298key_constant!(PORT_PHYSICAL, PW_KEY_PORT_PHYSICAL,
299 );
301key_constant!(PORT_TERMINAL, PW_KEY_PORT_TERMINAL,
302 );
304key_constant!(PORT_CONTROL, PW_KEY_PORT_CONTROL,
305 );
307key_constant!(PORT_MONITOR, PW_KEY_PORT_MONITOR,
308 );
310key_constant!(PORT_CACHE_PARAMS, PW_KEY_PORT_CACHE_PARAMS,
311 );
313key_constant!(PORT_EXTRA, PW_KEY_PORT_EXTRA,
314 );
316key_constant!(LINK_ID, PW_KEY_LINK_ID,
317 );
319key_constant!(LINK_INPUT_NODE, PW_KEY_LINK_INPUT_NODE,
320 );
322key_constant!(LINK_INPUT_PORT, PW_KEY_LINK_INPUT_PORT,
323 );
325key_constant!(LINK_OUTPUT_NODE, PW_KEY_LINK_OUTPUT_NODE,
326 );
328key_constant!(LINK_OUTPUT_PORT, PW_KEY_LINK_OUTPUT_PORT,
329 );
331key_constant!(LINK_PASSIVE, PW_KEY_LINK_PASSIVE,
332 );
334key_constant!(LINK_FEEDBACK, PW_KEY_LINK_FEEDBACK,
335 );
337key_constant!(DEVICE_ID, PW_KEY_DEVICE_ID,
338 );
340key_constant!(DEVICE_NAME, PW_KEY_DEVICE_NAME,
341 );
343key_constant!(DEVICE_PLUGGED, PW_KEY_DEVICE_PLUGGED,
344 );
346key_constant!(DEVICE_NICK, PW_KEY_DEVICE_NICK,
347 );
349key_constant!(DEVICE_STRING, PW_KEY_DEVICE_STRING,
350 );
352key_constant!(DEVICE_API, PW_KEY_DEVICE_API,
353 );
355key_constant!(DEVICE_DESCRIPTION, PW_KEY_DEVICE_DESCRIPTION,
356 );
358key_constant!(DEVICE_BUS_PATH, PW_KEY_DEVICE_BUS_PATH,
359 );
361key_constant!(DEVICE_SERIAL, PW_KEY_DEVICE_SERIAL,
362 );
364key_constant!(DEVICE_VENDOR_ID, PW_KEY_DEVICE_VENDOR_ID,
365 );
367key_constant!(DEVICE_VENDOR_NAME, PW_KEY_DEVICE_VENDOR_NAME,
368 );
370key_constant!(DEVICE_PRODUCT_ID, PW_KEY_DEVICE_PRODUCT_ID,
371 );
373key_constant!(DEVICE_PRODUCT_NAME, PW_KEY_DEVICE_PRODUCT_NAME,
374 );
376key_constant!(DEVICE_CLASS, PW_KEY_DEVICE_CLASS,
377 );
379key_constant!(DEVICE_FORM_FACTOR, PW_KEY_DEVICE_FORM_FACTOR,
380 );
382key_constant!(DEVICE_BUS, PW_KEY_DEVICE_BUS,
383 );
385key_constant!(DEVICE_SUBSYSTEM, PW_KEY_DEVICE_SUBSYSTEM,
386 );
388#[cfg(feature = "v0_3_53")]
389key_constant!(DEVICE_SYSFS_PATH, PW_KEY_DEVICE_SYSFS_PATH,
390 );
392key_constant!(DEVICE_ICON, PW_KEY_DEVICE_ICON,
393 );
395key_constant!(DEVICE_ICON_NAME, PW_KEY_DEVICE_ICON_NAME,
396 );
398key_constant!(DEVICE_INTENDED_ROLES, PW_KEY_DEVICE_INTENDED_ROLES,
399 );
401key_constant!(DEVICE_CACHE_PARAMS, PW_KEY_DEVICE_CACHE_PARAMS,
402 );
404key_constant!(MODULE_ID, PW_KEY_MODULE_ID,
405 );
407key_constant!(MODULE_NAME, PW_KEY_MODULE_NAME,
408 );
410key_constant!(MODULE_AUTHOR, PW_KEY_MODULE_AUTHOR,
411 );
413key_constant!(MODULE_DESCRIPTION, PW_KEY_MODULE_DESCRIPTION,
414 );
416key_constant!(MODULE_USAGE, PW_KEY_MODULE_USAGE,
417 );
419key_constant!(MODULE_VERSION, PW_KEY_MODULE_VERSION,
420 );
422key_constant!(FACTORY_ID, PW_KEY_FACTORY_ID,
423 );
425key_constant!(FACTORY_NAME, PW_KEY_FACTORY_NAME,
426 );
428key_constant!(FACTORY_USAGE, PW_KEY_FACTORY_USAGE,
429 );
431key_constant!(FACTORY_TYPE_NAME, PW_KEY_FACTORY_TYPE_NAME,
432 );
434key_constant!(FACTORY_TYPE_VERSION, PW_KEY_FACTORY_TYPE_VERSION,
435 );
437key_constant!(STREAM_IS_LIVE, PW_KEY_STREAM_IS_LIVE,
438 );
440key_constant!(STREAM_LATENCY_MIN, PW_KEY_STREAM_LATENCY_MIN,
441 );
443key_constant!(STREAM_LATENCY_MAX, PW_KEY_STREAM_LATENCY_MAX,
444 );
446key_constant!(STREAM_MONITOR, PW_KEY_STREAM_MONITOR,
447 );
449key_constant!(STREAM_DONT_REMIX, PW_KEY_STREAM_DONT_REMIX,
450 );
452key_constant!(STREAM_CAPTURE_SINK, PW_KEY_STREAM_CAPTURE_SINK,
453 );
455key_constant!(MEDIA_TYPE, PW_KEY_MEDIA_TYPE,
456 );
458key_constant!(MEDIA_CATEGORY, PW_KEY_MEDIA_CATEGORY,
459 );
461key_constant!(MEDIA_ROLE, PW_KEY_MEDIA_ROLE,
462 );
464key_constant!(MEDIA_CLASS, PW_KEY_MEDIA_CLASS,
465 );
467key_constant!(MEDIA_NAME, PW_KEY_MEDIA_NAME,
468 );
470key_constant!(MEDIA_TITLE, PW_KEY_MEDIA_TITLE,
471 );
473key_constant!(MEDIA_ARTIST, PW_KEY_MEDIA_ARTIST,
474 );
476key_constant!(MEDIA_COPYRIGHT, PW_KEY_MEDIA_COPYRIGHT,
477 );
479key_constant!(MEDIA_SOFTWARE, PW_KEY_MEDIA_SOFTWARE,
480 );
482key_constant!(MEDIA_LANGUAGE, PW_KEY_MEDIA_LANGUAGE,
483 );
485key_constant!(MEDIA_FILENAME, PW_KEY_MEDIA_FILENAME,
486 );
488key_constant!(MEDIA_ICON, PW_KEY_MEDIA_ICON,
489 );
491key_constant!(MEDIA_ICON_NAME, PW_KEY_MEDIA_ICON_NAME,
492 );
494key_constant!(MEDIA_COMMENT, PW_KEY_MEDIA_COMMENT,
495 );
497key_constant!(MEDIA_DATE, PW_KEY_MEDIA_DATE,
498 );
500key_constant!(MEDIA_FORMAT, PW_KEY_MEDIA_FORMAT,
501 );
503key_constant!(FORMAT_DSP, PW_KEY_FORMAT_DSP,
504 );
506key_constant!(AUDIO_CHANNEL, PW_KEY_AUDIO_CHANNEL,
507 );
509#[cfg(feature = "v0_3_32")]
510key_constant!(AUDIO_RATE, PW_KEY_AUDIO_RATE,
511 );
513key_constant!(AUDIO_CHANNELS, PW_KEY_AUDIO_CHANNELS,
514 );
516key_constant!(AUDIO_FORMAT, PW_KEY_AUDIO_FORMAT,
517 );
519#[cfg(feature = "v0_3_43")]
520key_constant!(AUDIO_ALLOWED_RATES, PW_KEY_AUDIO_ALLOWED_RATES,
521 );
523key_constant!(VIDEO_RATE, PW_KEY_VIDEO_RATE,
524 );
526key_constant!(VIDEO_FORMAT, PW_KEY_VIDEO_FORMAT,
527 );
529key_constant!(VIDEO_SIZE, PW_KEY_VIDEO_SIZE,
530 );
532#[cfg(feature = "v0_3_44")]
533key_constant!(TARGET_OBJECT, PW_KEY_TARGET_OBJECT,
534 );
536
537#[cfg(test)]
538mod tests {
539 use super::*;
540
541 #[test]
542 fn keys() {
543 assert_eq!(*REMOTE_NAME, "remote.name");
544 }
545}