Delete src/plugins/bad-traits.rs

This commit is contained in:
Григорий Сафронов 2026-01-18 21:55:13 +00:00
parent fafa454c24
commit 709e35f929

View File

@ -1,97 +0,0 @@
//! Трейты для системы плагинов с lock-free архитектурой
use std::sync::Arc;
use serde_json::Value;
/// Трейт для данных плагина (без Lua окружения)
pub trait PluginData: Send + Sync {
fn id(&self) -> &str;
fn name(&self) -> &str;
fn version(&self) -> &str;
fn description(&self) -> &str;
fn author(&self) -> &str;
fn path(&self) -> &str;
fn state(&self) -> PluginState;
}
/// Состояние плагина
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum PluginState {
Loading,
Loaded,
Running,
Error,
Disabled,
}
/// Трейт для обработки событий
pub trait EventHandler: Send + Sync {
fn handle_event(&self, event: PluginEvent) -> Result<(), String>;
}
/// Трейт для хуков
pub trait HookHandler: Send + Sync {
fn execute_hook(&self, hook_name: &str, data: Value) -> Result<Value, String>;
}
/// Событие плагина
#[derive(Debug, Clone)]
pub struct PluginEvent {
pub event_type: EventType,
pub data: Value,
pub source: String,
pub timestamp: u64,
}
/// Тип события
#[derive(Debug, Clone)]
pub enum EventType {
/// Системные события
SystemStart,
SystemStop,
PluginLoaded(String),
PluginUnloaded(String),
/// События базы данных
DatabaseOpen,
DatabaseClose,
TransactionBegin(u64),
TransactionCommit(u64),
TransactionRollback(u64),
/// Пользовательские события
Custom(String, String),
}
/// Хук плагина
#[derive(Debug, Clone)]
pub struct PluginHook {
pub name: String,
pub function: String,
pub priority: u32,
pub async_hook: bool,
}
/// Трейт для менеджера плагинов
pub trait PluginManagerTrait: Send + Sync {
/// Загрузить все плагины
fn load_all_plugins(&mut self) -> Result<Vec<Arc<dyn PluginData>>, String>;
/// Загрузить плагин по пути
fn load_plugin(&mut self, path: &str) -> Result<Arc<dyn PluginData>, String>;
/// Выгрузить плагин
fn unload_plugin(&mut self, plugin_id: &str) -> Result<(), String>;
/// Получить список загруженных плагинов
fn list_plugins(&self) -> Vec<Arc<dyn PluginData>>;
/// Получить плагин по ID
fn get_plugin(&self, plugin_id: &str) -> Option<Arc<dyn PluginData>>;
/// Отправить событие
fn emit_event(&self, event: PluginEvent) -> Result<(), String>;
/// Выполнить хук
fn execute_hook(&self, hook_name: &str, data: Value) -> Result<Value, String>;
}