Conductor

Struct Conductor 

Source
pub struct Conductor<Link: ConductorLink> { /* private fields */ }
Expand description

The conductor manages the proxy chain lifecycle and message routing.

It maintains connections to all components in the chain and routes messages bidirectionally between the editor, components, and agent.

Implementations§

Source§

impl<Link: ConductorLink> Conductor<Link>

Source

pub fn new( link: Link, name: impl ToString, instantiator: Link::Instantiator, mcp_bridge_mode: McpBridgeMode, ) -> Self

Source§

impl Conductor<ConductorToClient>

Source

pub fn new_agent( name: impl ToString, instantiator: impl InstantiateProxiesAndAgent + 'static, mcp_bridge_mode: McpBridgeMode, ) -> Self

Create a conductor in agent mode (the last component is an agent).

Source§

impl Conductor<ConductorToConductor>

Source

pub fn new_proxy( name: impl ToString, instantiator: impl InstantiateProxies + 'static, mcp_bridge_mode: McpBridgeMode, ) -> Self

Create a conductor in proxy mode (forwards to another conductor).

Source§

impl<Link: ConductorLink> Conductor<Link>

Source

pub fn trace_to(self, dest: impl WriteEvent) -> Self

Enable trace logging to a custom destination.

Use sacp-trace-viewer to view the trace as an interactive sequence diagram.

Source

pub fn trace_to_path(self, path: impl AsRef<Path>) -> Result<Self>

Enable trace logging to a file path.

Events will be written as newline-delimited JSON (.jsons format). Use sacp-trace-viewer to view the trace as an interactive sequence diagram.

Source

pub fn with_trace_writer(self, writer: TraceWriter) -> Self

Enable trace logging with an existing TraceWriter.

Source

pub fn into_connection_builder( self, ) -> JrConnectionBuilder<impl JrMessageHandler<Link = Link>, impl JrResponder<Link>>

Source

pub async fn run( self, transport: impl Component<Link::ConnectsTo> + 'static, ) -> Result<(), Error>

Convenience method to run the conductor with a transport.

This is equivalent to:

conductor.into_connection_builder()
    .connect_to(transport)
    .serve()
    .await

Trait Implementations§

Source§

impl<Link: ConductorLink> Component<<Link as ConductorLink>::Speaks> for Conductor<Link>

Source§

async fn serve( self, client: impl Component<Link::ConnectsTo>, ) -> Result<(), Error>

Serve this component by forwarding to a client component. Read more
Source§

fn into_server( self, ) -> (Channel, Pin<Box<dyn Future<Output = Result<(), Error>> + Send>>)
where Self: Sized,

Convert this component into a channel endpoint and server future. Read more

Auto Trait Implementations§

§

impl<Link> Freeze for Conductor<Link>
where <Link as ConductorLink>::Instantiator: Freeze, Link: Freeze,

§

impl<Link> !RefUnwindSafe for Conductor<Link>

§

impl<Link> Send for Conductor<Link>

§

impl<Link> !Sync for Conductor<Link>

§

impl<Link> Unpin for Conductor<Link>
where <Link as ConductorLink>::Instantiator: Unpin, Link: Unpin,

§

impl<Link> !UnwindSafe for Conductor<Link>

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

Source§

impl<T> IntoOption<T> for T

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<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<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,