#[repr(C)]pub struct CNativePluginAPI {
pub version: u32,
pub get_metadata: extern "C" fn() -> *const CNodeMetadata,
pub create_instance: extern "C" fn(*const c_char, CLogCallback, *mut c_void) -> CPluginHandle,
pub process_packet: extern "C" fn(CPluginHandle, *const c_char, *const CPacket, COutputCallback, *mut c_void, CTelemetryCallback, *mut c_void) -> CResult,
pub update_params: extern "C" fn(CPluginHandle, *const c_char) -> CResult,
pub flush: extern "C" fn(CPluginHandle, COutputCallback, *mut c_void, CTelemetryCallback, *mut c_void) -> CResult,
pub destroy_instance: extern "C" fn(CPluginHandle),
}Expand description
The main plugin API structure Plugins export a function that returns a pointer to this struct
Fields§
§version: u32API version for compatibility checking
get_metadata: extern "C" fn() -> *const CNodeMetadataGet metadata about the node type Returns: Pointer to CNodeMetadata (must remain valid for plugin lifetime)
create_instance: extern "C" fn(*const c_char, CLogCallback, *mut c_void) -> CPluginHandleCreate a new plugin instance params: JSON string with initialization parameters (nullable) log_callback: Callback for plugin to send log messages to host log_user_data: Opaque pointer to pass to log callback Returns: Opaque handle to the instance, or null on error
process_packet: extern "C" fn(CPluginHandle, *const c_char, *const CPacket, COutputCallback, *mut c_void, CTelemetryCallback, *mut c_void) -> CResultProcess an incoming packet handle: Plugin instance handle input_pin: Name of the input pin packet: The packet to process output_callback: Callback to send output packets callback_data: User data to pass to output callback telemetry_callback: Callback to emit telemetry events telemetry_user_data: User data to pass to telemetry callback
update_params: extern "C" fn(CPluginHandle, *const c_char) -> CResultUpdate runtime parameters handle: Plugin instance handle params: JSON string with new parameters (nullable)
flush: extern "C" fn(CPluginHandle, COutputCallback, *mut c_void, CTelemetryCallback, *mut c_void) -> CResultFlush any buffered data (called when input stream ends) handle: Plugin instance handle output_callback: Callback to send output packets callback_data: User data to pass to output callback telemetry_callback: Callback to emit telemetry events telemetry_user_data: User data to pass to telemetry callback
destroy_instance: extern "C" fn(CPluginHandle)Destroy a plugin instance handle: Plugin instance handle