pub struct ModelRouterMiddleware { /* private fields */ }Expand description
Channel selection and model routing middleware.
Implementations§
Source§impl ModelRouterMiddleware
impl ModelRouterMiddleware
Sourcepub async fn from_storage(storage: Arc<dyn Storage>) -> Result<Self, ProxyError>
pub async fn from_storage(storage: Arc<dyn Storage>) -> Result<Self, ProxyError>
Creates a new ModelRouterMiddleware from a storage backend.
Loads all enabled channels and their model mappings, parsing the storage-layer string fields into typed enums.
§Errors
Returns ProxyError if the storage backend fails or if any channel
has an unrecognized protocol string.
Sourcepub fn health_map(&self) -> &Arc<DashMap<String, ChannelState>>
pub fn health_map(&self) -> &Arc<DashMap<String, ChannelState>>
Returns a reference to the in-memory health map.
Sourcepub fn api_key_map(&self) -> &Arc<DashMap<String, SecretString>>
pub fn api_key_map(&self) -> &Arc<DashMap<String, SecretString>>
Returns a reference to the shared API-key override map.
The admin API writes updated keys here so the router picks them up at request time without needing a restart.
Sourcepub fn channels_swap(&self) -> Arc<ArcSwap<Vec<ResolvedChannel>>>
pub fn channels_swap(&self) -> Arc<ArcSwap<Vec<ResolvedChannel>>>
Returns a clone of the atomic channel list Arc so the admin API can trigger a hot-reload after mutations (priority, enabled, etc.).
Trait Implementations§
Source§impl Debug for ModelRouterMiddleware
impl Debug for ModelRouterMiddleware
Source§impl ProxyMiddleware for ModelRouterMiddleware
impl ProxyMiddleware for ModelRouterMiddleware
Source§fn on_request<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
req: &'life1 mut ProxyRequest,
ctx: &'life2 mut ConnectionContext,
) -> Pin<Box<dyn Future<Output = Result<(), ProxyError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn on_request<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
req: &'life1 mut ProxyRequest,
ctx: &'life2 mut ConnectionContext,
) -> Pin<Box<dyn Future<Output = Result<(), ProxyError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called before forwarding the request to upstream. Read more
Source§fn on_response<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
res: &'life1 mut ProxyResponse,
ctx: &'life2 ConnectionContext,
) -> Pin<Box<dyn Future<Output = Result<(), ProxyError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn on_response<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
res: &'life1 mut ProxyResponse,
ctx: &'life2 ConnectionContext,
) -> Pin<Box<dyn Future<Output = Result<(), ProxyError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Called after receiving the response from upstream. Read more
Source§fn on_connect<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 ConnectionContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn on_connect<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 ConnectionContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Called when a new connection is established. Runs in registration order.
Source§fn on_disconnect<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 ConnectionContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn on_disconnect<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 ConnectionContext,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Called when a connection is closed. Runs in reverse registration order.
Source§fn on_init<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), ProxyError>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn on_init<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), ProxyError>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Called once when the proxy starts. Use for opening DB pools, loading config, etc.
Source§fn on_shutdown<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), ProxyError>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn on_shutdown<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), ProxyError>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Called once when the proxy shuts down gracefully.
Auto Trait Implementations§
impl !RefUnwindSafe for ModelRouterMiddleware
impl !UnwindSafe for ModelRouterMiddleware
impl Freeze for ModelRouterMiddleware
impl Send for ModelRouterMiddleware
impl Sync for ModelRouterMiddleware
impl Unpin for ModelRouterMiddleware
impl UnsafeUnpin for ModelRouterMiddleware
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more