Skip to main content

DefaultRouteController

Struct DefaultRouteController 

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

Default implementation of RouteController.

Manages route lifecycle with support for:

  • Starting/stopping individual routes
  • Suspending and resuming routes
  • Auto-startup with startup ordering
  • Graceful shutdown

Implementations§

Source§

impl DefaultRouteController

Source

pub fn new(registry: Arc<Mutex<Registry>>) -> Self

Create a new DefaultRouteController with the given registry.

Source

pub fn with_beans( registry: Arc<Mutex<Registry>>, beans: Arc<Mutex<BeanRegistry>>, ) -> Self

Create a new DefaultRouteController with shared bean registry.

Source

pub fn with_languages( registry: Arc<Mutex<Registry>>, languages: SharedLanguageRegistry, ) -> Self

Create a new DefaultRouteController with shared language registry.

Source

pub fn set_self_ref(&mut self, self_ref: Arc<Mutex<dyn RouteController>>)

Set the self-reference for creating ProducerContext.

This must be called after wrapping the controller in Arc<Mutex<>>.

Source

pub fn set_runtime_handle(&mut self, runtime: Arc<dyn RuntimeHandle>)

Set runtime handle for ProducerContext creation.

Source

pub fn self_ref_for_supervision( &self, ) -> Option<Arc<Mutex<dyn RouteController>>>

Get the self-reference, if set.

Used by SupervisingRouteController to spawn the supervision loop.

Source

pub fn runtime_handle_for_supervision(&self) -> Option<Arc<dyn RuntimeHandle>>

Get runtime handle for supervision-triggered lifecycle commands, if set.

Source

pub fn set_crash_notifier(&mut self, tx: Sender<CrashNotification>)

Set the crash notifier for supervision.

When set, the controller will send a CrashNotification whenever a consumer crashes.

Source

pub fn set_error_handler(&mut self, config: ErrorHandlerConfig)

Set a global error handler applied to all routes without a per-route handler.

Source

pub fn set_tracer_config(&mut self, config: &TracerConfig)

Configure tracing for this route controller.

Source

pub fn add_route( &mut self, definition: RouteDefinition, ) -> Result<(), CamelError>

Add a route definition to the controller.

Steps are resolved immediately using the registry.

§Errors

Returns an error if:

  • A route with the same ID already exists
  • Step resolution fails
Source

pub fn compile_route_definition( &self, def: RouteDefinition, ) -> Result<BoxProcessor, CamelError>

Compile a RouteDefinition into a BoxProcessor without inserting into the route map.

Used by hot-reload to prepare a new pipeline for atomic swap without disrupting the running route. The caller is responsible for swapping via swap_pipeline.

Source

pub fn remove_route(&mut self, route_id: &str) -> Result<(), CamelError>

Remove a route from the controller map.

The route must be stopped before removal (status Stopped or Failed). Returns an error if the route is still running or does not exist. Does not cancel any running tasks — call stop_route first.

Source

pub fn route_count(&self) -> usize

Returns the number of routes in the controller.

Source

pub fn route_ids(&self) -> Vec<String>

Returns all route IDs.

Source

pub fn auto_startup_route_ids(&self) -> Vec<String>

Returns route IDs that should auto-start, sorted by startup order (ascending).

Source

pub fn shutdown_route_ids(&self) -> Vec<String>

Returns route IDs sorted by shutdown order (startup order descending).

Source

pub fn swap_pipeline( &self, route_id: &str, new_pipeline: BoxProcessor, ) -> Result<(), CamelError>

Atomically swap the pipeline of a route.

In-flight requests finish with the old pipeline (kept alive by Arc). New requests immediately use the new pipeline.

Source

pub fn route_from_uri(&self, route_id: &str) -> Option<String>

Returns the from_uri of a route, if it exists.

Source

pub fn get_pipeline(&self, route_id: &str) -> Option<BoxProcessor>

Get a clone of the current pipeline for a route.

This is useful for testing and introspection. Returns None if the route doesn’t exist.

Trait Implementations§

Source§

impl RouteController for DefaultRouteController

Source§

fn start_route<'life0, 'life1, 'async_trait>( &'life0 mut self, route_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<(), CamelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Start a specific route by its ID. Read more
Source§

fn stop_route<'life0, 'life1, 'async_trait>( &'life0 mut self, route_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<(), CamelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Stop a specific route by its ID. Read more
Source§

fn restart_route<'life0, 'life1, 'async_trait>( &'life0 mut self, route_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<(), CamelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Restart a specific route by its ID. Read more
Source§

fn suspend_route<'life0, 'life1, 'async_trait>( &'life0 mut self, route_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<(), CamelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Suspend a specific route by its ID. Read more
Source§

fn resume_route<'life0, 'life1, 'async_trait>( &'life0 mut self, route_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<(), CamelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Resume a suspended route by its ID. Read more
Source§

fn start_all_routes<'life0, 'async_trait>( &'life0 mut self, ) -> Pin<Box<dyn Future<Output = Result<(), CamelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Start all routes in the context. Read more
Source§

fn stop_all_routes<'life0, 'async_trait>( &'life0 mut self, ) -> Pin<Box<dyn Future<Output = Result<(), CamelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Stop all routes in the context. Read more
Source§

impl RouteControllerInternal for DefaultRouteController

Source§

fn add_route(&mut self, def: RouteDefinition) -> Result<(), CamelError>

Add a route definition to the controller.
Source§

fn swap_pipeline( &self, route_id: &str, pipeline: BoxProcessor, ) -> Result<(), CamelError>

Atomically swap the pipeline of a running route (for hot-reload).
Source§

fn route_from_uri(&self, route_id: &str) -> Option<String>

Returns the from_uri of a route by ID.
Source§

fn set_error_handler(&mut self, config: ErrorHandlerConfig)

Set a global error handler applied to all routes.
Source§

fn set_self_ref(&mut self, self_ref: Arc<Mutex<dyn RouteController>>)

Set the self-reference needed to create ProducerContext.
Source§

fn set_runtime_handle(&mut self, runtime: Arc<dyn RuntimeHandle>)

Set runtime handle for ProducerContext command/query access.
Source§

fn route_count(&self) -> usize

Returns the number of routes in the controller.
Source§

fn route_ids(&self) -> Vec<String>

Returns all route IDs.
Source§

fn auto_startup_route_ids(&self) -> Vec<String>

Returns route IDs that should auto-start, sorted by startup order (ascending).
Source§

fn shutdown_route_ids(&self) -> Vec<String>

Returns route IDs sorted by shutdown order (startup order descending).
Source§

fn set_tracer_config(&mut self, config: &TracerConfig)

Configure tracing from a TracerConfig.
Source§

fn compile_route_definition( &self, def: RouteDefinition, ) -> Result<BoxProcessor, CamelError>

Compile a RouteDefinition into a BoxProcessor without inserting it into the route map. Used by hot-reload to prepare a new pipeline for atomic swap.
Source§

fn remove_route(&mut self, route_id: &str) -> Result<(), CamelError>

Remove a route from the controller map (route must be stopped first).
Source§

fn start_route_reload<'life0, 'life1, 'async_trait>( &'life0 mut self, route_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<(), CamelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Start a route by ID (for use by hot-reload, where async_trait is required).
Source§

fn stop_route_reload<'life0, 'life1, 'async_trait>( &'life0 mut self, route_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<(), CamelError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Stop a route by ID (for use by hot-reload, where async_trait is required).

Auto Trait Implementations§

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> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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, 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