Router

Struct Router 

Source
pub struct Router { /* private fields */ }
Expand description

Router for intelligent provider selection.

This struct implements the routing logic based on the configured strategy and maintains provider performance statistics for informed decision making.

Implementations§

Source§

impl Router

Source

pub fn new(strategy: RoutingStrategy) -> Self

Create a new router with the specified strategy.

§Arguments
  • strategy - The routing strategy to use for provider selection
§Examples
use ultrafast_models_sdk::routing::{Router, RoutingStrategy};

let router = Router::new(RoutingStrategy::LoadBalance {
    weights: vec![0.6, 0.4],
});
Source

pub fn select_provider( &self, providers: &[String], context: &RoutingContext, ) -> Option<ProviderSelection>

Select a provider based on the current routing strategy.

§Arguments
  • providers - List of available provider identifiers
  • context - Routing context with request information
§Returns

Returns a provider selection if one is found, or None if no provider can be selected based on the current strategy and context.

§Examples
use ultrafast_models_sdk::routing::{Router, RoutingStrategy, RoutingContext};
use std::collections::HashMap;

let router = Router::new(RoutingStrategy::Single);
let providers = vec!["openai".to_string(), "anthropic".to_string()];
let context = RoutingContext {
    model: Some("gpt-4".to_string()),
    user_region: None,
    request_size: 1000,
    estimated_tokens: 500,
    user_id: None,
    metadata: HashMap::new(),
};

if let Some(selection) = router.select_provider(&providers, &context) {
    println!("Selected: {}", selection.provider_id);
}
Source

pub fn update_stats( &mut self, provider_id: &str, success: bool, latency_ms: u64, )

Update provider statistics after a request.

§Arguments
  • provider_id - Identifier of the provider
  • success - Whether the request was successful
  • latency_ms - Response latency in milliseconds
§Examples
use ultrafast_models_sdk::routing::Router;

let mut router = Router::new(RoutingStrategy::Single);

// Update stats after a successful request
router.update_stats("openai", true, 150);

// Update stats after a failed request
router.update_stats("anthropic", false, 500);

Auto Trait Implementations§

§

impl Freeze for Router

§

impl RefUnwindSafe for Router

§

impl Send for Router

§

impl Sync for Router

§

impl Unpin for Router

§

impl UnwindSafe for Router

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,