Skip to main content

RyditModule

Trait RyditModule 

Source
pub trait RyditModule: Send + Sync {
    // Required methods
    fn name(&self) -> &'static str;
    fn version(&self) -> &'static str;
    fn register(&self) -> HashMap<&'static str, &'static str>;
    fn execute(&self, command: &str, params: Value) -> ModuleResult;

    // Provided methods
    fn metadata(&self) -> ModuleMetadata { ... }
    fn on_reload(&mut self) { ... }
    fn on_unload(&mut self) { ... }
}
Expand description

Trait que todos los módulos deben implementar

§Ejemplo

use ry_core::{RyditModule, ModuleResult, ModuleMetadata};
use serde_json::Value;
use std::collections::HashMap;

struct MiModulo;

impl RyditModule for MiModulo {
    fn name(&self) -> &'static str { "mi_modulo" }
    fn version(&self) -> &'static str { "1.0.0" }
    fn register(&self) -> HashMap<&'static str, &'static str> {
        let mut cmds = HashMap::new();
        cmds.insert("saludar", "Saluda al usuario");
        cmds
    }
    fn execute(&self, command: &str, params: Value) -> ModuleResult {
        match command {
            "saludar" => Ok(Value::String("Hola!".to_string())),
            _ => Err(ry_core::ModuleError {
                code: "UNKNOWN_COMMAND".to_string(),
                message: format!("Comando desconocido: {}", command),
            }),
        }
    }
}

Required Methods§

Source

fn name(&self) -> &'static str

Nombre único del módulo

Source

fn version(&self) -> &'static str

Versión del módulo

Source

fn register(&self) -> HashMap<&'static str, &'static str>

Registro de comandos disponibles Retorna: HashMap<nombre_comando, descripción>

Source

fn execute(&self, command: &str, params: Value) -> ModuleResult

Ejecuta un comando con parámetros

§Arguments
  • command - Nombre del comando
  • params - Parámetros JSON

Provided Methods§

Source

fn metadata(&self) -> ModuleMetadata

Metadata del módulo (v0.8.2+)

Proporciona información descriptiva para el sistema de plugins y carga dinámica. Por defecto retorna metadata básica.

Source

fn on_reload(&mut self)

Hook llamado antes de recargar el módulo (hot reload)

Permite limpiar recursos o guardar estado antes de una recarga. Por defecto no hace nada.

Source

fn on_unload(&mut self)

Hook llamado al descargar el módulo

Permite limpiar recursos asignados. Por defecto no hace nada.

Trait Implementations§

Source§

impl RyditModule for Box<dyn RyditModule>

Permite registrar Box<dyn RyditModule> directamente Necesario para carga dinámica (libloading) donde el módulo ya viene como Box<dyn RyditModule>

Source§

fn name(&self) -> &'static str

Nombre único del módulo
Source§

fn version(&self) -> &'static str

Versión del módulo
Source§

fn register(&self) -> HashMap<&'static str, &'static str>

Registro de comandos disponibles Retorna: HashMap<nombre_comando, descripción>
Source§

fn execute(&self, command: &str, params: Value) -> ModuleResult

Ejecuta un comando con parámetros Read more
Source§

fn metadata(&self) -> ModuleMetadata

Metadata del módulo (v0.8.2+) Read more
Source§

fn on_reload(&mut self)

Hook llamado antes de recargar el módulo (hot reload) Read more
Source§

fn on_unload(&mut self)

Hook llamado al descargar el módulo Read more

Implementations on Foreign Types§

Source§

impl RyditModule for Box<dyn RyditModule>

Permite registrar Box<dyn RyditModule> directamente Necesario para carga dinámica (libloading) donde el módulo ya viene como Box<dyn RyditModule>

Source§

fn name(&self) -> &'static str

Source§

fn version(&self) -> &'static str

Source§

fn register(&self) -> HashMap<&'static str, &'static str>

Source§

fn execute(&self, command: &str, params: Value) -> ModuleResult

Source§

fn metadata(&self) -> ModuleMetadata

Source§

fn on_reload(&mut self)

Source§

fn on_unload(&mut self)

Implementors§