1use std::os::raw::{c_char, c_int, c_void};
2
3pub use planus_codegen::*;
4
5mod planus_codegen {
6 #![allow(clippy::all)]
7 include!(concat!(env!("OUT_DIR"), "/fbs.rs"));
8}
9
10#[repr(transparent)]
11#[derive(Copy, Clone)]
12pub struct UvAsyncT(pub *const c_void);
13
14unsafe impl Send for UvAsyncT {}
15
16#[repr(transparent)]
17pub struct ChannelReadCtx(pub *const c_void);
18pub type ChannelReadFreeFn = Option<
19 unsafe extern "C" fn(
20 *mut u8,
21 u32,
22 usize,
23 ),
24>;
25pub type ChannelReadFn = unsafe extern "C" fn(
26 *mut *mut u8,
27 *mut u32,
28 *mut usize,
29 UvAsyncT,
33 ChannelReadCtx,
34) -> ChannelReadFreeFn;
35
36unsafe impl Send for ChannelReadCtx {}
37
38#[repr(transparent)]
39pub struct ChannelWriteCtx(pub *const c_void);
40pub type ChannelWriteFn = unsafe extern "C" fn(
41 *const u8,
42 u32,
43 ChannelWriteCtx,
44);
45
46unsafe impl Send for ChannelWriteCtx {}
47
48#[link(name = "mediasoup-worker", kind = "static")]
49extern "C" {
50 pub fn uv_async_send(handle: UvAsyncT) -> c_int;
52
53 pub fn mediasoup_worker_run(
54 argc: c_int,
55 argv: *const *const c_char,
56 version: *const c_char,
57 consumer_channel_fd: c_int,
58 producer_channel_fd: c_int,
59 channel_read_fn: ChannelReadFn,
60 channel_read_ctx: ChannelReadCtx,
61 channel_write_fn: ChannelWriteFn,
62 channel_write_ctx: ChannelWriteCtx,
63 ) -> c_int;
64}