Skip to main content

StreamableHttpClientTransportConfig

Struct StreamableHttpClientTransportConfig 

Source
#[non_exhaustive]
pub struct StreamableHttpClientTransportConfig { pub uri: Arc<str>, pub retry_config: Arc<dyn SseRetryPolicy>, pub channel_buffer_capacity: usize, pub max_concurrent_requests: usize, pub control_request_timeout: Duration, pub session_recovery_timeout: Duration, pub allow_stateless: bool, pub auth_header: Option<String>, pub custom_headers: HashMap<HeaderName, HeaderValue>, pub max_sse_event_size: usize, pub reinit_on_expired_session: bool, }

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§uri: Arc<str>§retry_config: Arc<dyn SseRetryPolicy>§channel_buffer_capacity: usize§max_concurrent_requests: usize

Maximum number of ordinary http POSTs in progress (default: 16). A POST stops counting when it completes or opens an sse response stream. Zero is treated as one. Cancellation and replies use a separate queue with one extra POST slot and use Self::control_request_timeout.

§control_request_timeout: Duration

Maximum time a cancellation or reply POST can run after it starts (default: five seconds). Time spent waiting in the control queue does not count toward this timeout.

§session_recovery_timeout: Duration

Maximum wait for old POSTs to finish before session recovery (default: five seconds). The new initialization handshake has a separate timeout of the same length. An unfinished old POST returns StreamableHttpError::SessionRecoveryTimeout and is not retried because the server may have processed it.

§allow_stateless: bool

if true, the transport will not require a session to be established

§auth_header: Option<String>

The value to send in the authorization header

§custom_headers: HashMap<HeaderName, HeaderValue>

Custom HTTP headers to include with every request

§max_sse_event_size: usize

Maximum raw size of one SSE event accepted from the server.

The built-in reqwest and Unix socket clients enforce this value. Custom StreamableHttpClient implementations must override the corresponding *_with_max_sse_event_size methods to enforce it.

§reinit_on_expired_session: bool

Automatically creates a new session when the server reports an expired session (http 404).

Ordinary POSTs that fail with SessionExpired in the same session share one recovery attempt:

  1. Wait for old POSTs, up to Self::session_recovery_timeout.
  2. Repeat the original initialize handshake and open new streams.
  3. Retry each ordinary POST that failed with SessionExpired once.

Control POSTs and other POST failures are not retried. If recovery or a retry fails, the transport returns an error to the caller.

Implementations§

Source§

impl StreamableHttpClientTransportConfig

Source

pub fn with_uri(uri: impl Into<Arc<str>>) -> StreamableHttpClientTransportConfig

Source

pub fn max_concurrent_requests( self, limit: usize, ) -> StreamableHttpClientTransportConfig

Set how many ordinary POSTs can run at once. One keeps them serial; zero also means one.

Source

pub fn control_request_timeout( self, timeout: Duration, ) -> StreamableHttpClientTransportConfig

Set the timeout for cancellation and reply POSTs, starting when each POST starts.

Source

pub fn session_recovery_timeout( self, timeout: Duration, ) -> StreamableHttpClientTransportConfig

Set the separate timeouts for waiting for old POSTs and creating a replacement session.

Source

pub fn auth_header<T>(self, value: T) -> StreamableHttpClientTransportConfig
where T: Into<String>,

Set the authorization header to send with requests

§Arguments
  • value - A bearer token without the Bearer prefix
Source

pub fn custom_headers( self, custom_headers: HashMap<HeaderName, HeaderValue>, ) -> StreamableHttpClientTransportConfig

Set custom HTTP headers to include with every request

§Arguments
  • custom_headers - A HashMap of header names to header values
§Example
use std::collections::HashMap;
use http::{HeaderName, HeaderValue};
use rmcp::transport::streamable_http_client::StreamableHttpClientTransportConfig;

let mut headers = HashMap::new();
headers.insert(
    HeaderName::from_static("x-custom-header"),
    HeaderValue::from_static("custom-value")
);

let config = StreamableHttpClientTransportConfig::with_uri("http://localhost:8000")
    .custom_headers(headers);
Source

pub fn max_sse_event_size( self, bytes: usize, ) -> StreamableHttpClientTransportConfig

Set the maximum raw size of one SSE event accepted from the server.

Source

pub fn reinit_on_expired_session( self, enable: bool, ) -> StreamableHttpClientTransportConfig

Set whether the transport should attempt transparent re-initialization on session expiration See Self::reinit_on_expired_session for details.

§Example
use rmcp::transport::streamable_http_client::StreamableHttpClientTransportConfig;
let config = StreamableHttpClientTransportConfig::with_uri("http://localhost:8000")
    .reinit_on_expired_session(true);

Trait Implementations§

Source§

impl Clone for StreamableHttpClientTransportConfig

Source§

fn clone(&self) -> StreamableHttpClientTransportConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StreamableHttpClientTransportConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for StreamableHttpClientTransportConfig

Source§

fn default() -> StreamableHttpClientTransportConfig

Returns the “default value” for a type. Read more

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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: Sized + 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: Sized + 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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