1mod binary_types;
19mod buffer;
20mod exports;
21mod handle;
22mod panic_guard;
23
24pub use binary_types::{RbBytes, RbBytesOwned, RbResponse, RbString, RbStringOwned};
25pub use buffer::FfiBuffer;
26pub use handle::{PluginHandle, PluginHandleManager};
27
28pub use exports::{
30 BinaryMessageHandler, plugin_call, plugin_call_raw, plugin_free_buffer,
31 plugin_get_rejected_count, plugin_get_state, plugin_init, plugin_set_log_level,
32 plugin_shutdown, rb_response_free, register_binary_handler,
33};
34
35pub use rustbridge_core::{LogLevel, Plugin, PluginConfig, PluginContext, PluginError};
37pub use rustbridge_logging::LogCallback;
38pub use rustbridge_runtime::{AsyncBridge, AsyncRuntime, RuntimeConfig};
39pub use rustbridge_transport::{RequestEnvelope, ResponseEnvelope};
40
41pub mod prelude {
43 pub use crate::{
44 FfiBuffer, PluginHandle, PluginHandleManager, RbBytes, RbBytesOwned, RbResponse, RbString,
45 RbStringOwned,
46 };
47 pub use rustbridge_core::prelude::*;
48 pub use rustbridge_logging::prelude::*;
49 pub use rustbridge_runtime::prelude::*;
50 pub use rustbridge_transport::prelude::*;
51}
52
53#[macro_export]
70macro_rules! plugin_entry {
71 ($factory:expr_2021) => {
72 #[unsafe(no_mangle)]
73 pub unsafe extern "C" fn plugin_create() -> *mut std::ffi::c_void {
74 let plugin = Box::new($factory());
75 Box::into_raw(plugin) as *mut std::ffi::c_void
76 }
77 };
78}