pub struct PluginRegistry { /* private fields */ }
Implementations§
Source§impl PluginRegistry
impl PluginRegistry
pub fn new() -> Self
Sourcepub fn num_plugins(&self) -> usize
pub fn num_plugins(&self) -> usize
Return the count of different plugins
A plugin can be registered for several layers, but it will count as one.
Sourcepub fn add_plugin(&mut self, plugin: SafePlugin) -> PluginID
pub fn add_plugin(&mut self, plugin: SafePlugin) -> PluginID
Add a plugin to the registry, and return the identifier
Sourcepub fn run_plugins<F, P>(&self, predicate: P, f: F)
pub fn run_plugins<F, P>(&self, predicate: P, f: F)
Run function F
on all known plugins (registered or not) matching P
Sourcepub fn register_layer(
&mut self,
layer: u8,
layer_filter: u16,
plugin_id: PluginID,
) -> Result<(), PluginBuilderError>
pub fn register_layer( &mut self, layer: u8, layer_filter: u16, plugin_id: PluginID, ) -> Result<(), PluginBuilderError>
Register a layer for analysis, for the identified plugin
layer_filter
is a filter on the value relative to the layer: for L3,
use for ex. ETHERNET_IPV4, for L4, TRANSPORT_TCP, etc.
Special value 0
for layer_filter
means all possible values.
Sourcepub fn get_plugins_for_layer(
&self,
layer: u8,
layer_filter: u16,
) -> Option<&Vec<SafePlugin>>
pub fn get_plugins_for_layer( &self, layer: u8, layer_filter: u16, ) -> Option<&Vec<SafePlugin>>
Get plugins matching the given layer
and layer_filter
Sourcepub fn iter_registered_plugins(
&self,
) -> impl Iterator<Item = (&PluginInfo, &SafePlugin)>
pub fn iter_registered_plugins( &self, ) -> impl Iterator<Item = (&PluginInfo, &SafePlugin)>
Return an iterator on registered plugins
The same plugin instance can be present multiple times, if registered with different PluginInfo
(for ex. layer filters).
Sourcepub fn iter_plugins(&self) -> impl Iterator<Item = &SafePlugin>
pub fn iter_plugins(&self) -> impl Iterator<Item = &SafePlugin>
Return an iterator on all known plugins
Known plugins are plugins present in the registry (registered or not for layers)