flow_guard/
lib.rs

1/* * Created and Developed by: Cleiton Augusto Correa Bezerra
2 * Project: FlowGuard - Adaptive Concurrency Control & Backpressure
3 * License: MIT / Apache-2.0
4 */
5
6//! # FlowGuard
7//!
8//! `flow-guard` é uma biblioteca de controle de concorrência adaptativo.
9//! Desenvolvida por Cleiton Augusto Correa Bezerra, ela implementa algoritmos
10//! de backpressure dinâmico para proteger sistemas de alta carga.
11
12// 1. Declaração dos módulos internos
13pub mod error;
14pub mod strategy;
15pub mod limiter;
16
17// Condicional: Só compila a integração com Tower se a feature estiver ativa
18#[cfg(feature = "tower")]
19pub mod integration;
20
21// 2. Re-exportações (Facilita a vida do usuário da lib)
22// Isso resolve o erro "Unresolved import" que você teve
23pub use error::FlowError;
24pub use limiter::FlowGuard;
25pub use strategy::VegasStrategy;
26
27#[cfg(feature = "tower")]
28pub use integration::FlowGuardLayer;
29
30use std::time::Duration;
31
32/// Trait fundamental para definir como o limite de requisições deve se comportar.
33///
34/// Implementado por estratégias como `VegasStrategy`.
35pub trait LimitStrategy: Send + Sync {
36    /// Retorna o limite de concorrência atual permitido pela estratégia.
37    fn current_limit(&self) -> usize;
38
39    /// Chamado após uma execução bem-sucedida para atualizar a latência.
40    fn on_success(&self, latency: Duration);
41
42    /// Chamado quando ocorre um erro para que a estratégia possa reduzir a carga.
43    fn on_error(&self);
44}