pub struct PresetConfig { /* private fields */ }Expand description
Configuration for middleware presets.
Provides factory methods for creating common middleware configurations.
Implementations§
Source§impl PresetConfig
impl PresetConfig
Sourcepub fn new(service_name: impl Into<String>) -> Self
pub fn new(service_name: impl Into<String>) -> Self
Create a new preset configuration with the given service name.
Sourcepub fn stdio() -> Self
pub fn stdio() -> Self
Create a stdio transport preset (metrics, NO compression).
Critical: This preset explicitly excludes compression middleware because compression would break stdio’s line-delimited JSON framing.
Includes:
MetricsMiddleware: Performance and error metrics
§Examples
use pmcp::shared::middleware_presets::PresetConfig;
use pmcp::{ClientBuilder, StdioTransport};
let transport = StdioTransport::new();
let client = ClientBuilder::new(transport)
.middleware_chain(PresetConfig::stdio().build_protocol_chain())
.build();Sourcepub fn http() -> Self
pub fn http() -> Self
Create an HTTP transport preset (metrics).
Includes:
MetricsMiddleware: Performance and error metrics
Note: OAuth and compression middleware should be added via
StreamableHttpTransportConfigBuilder::with_http_middleware().
§Examples
use pmcp::shared::middleware_presets::PresetConfig;
use pmcp::shared::streamable_http::StreamableHttpTransportConfigBuilder;
use pmcp::shared::StreamableHttpTransport;
use pmcp::ClientBuilder;
use url::Url;
// Protocol middleware preset
let protocol_chain = PresetConfig::http().build_protocol_chain();
// HTTP middleware (OAuth, etc.) configured separately
let config = StreamableHttpTransportConfigBuilder::new(
Url::parse("http://localhost:8080").unwrap()
)
// .with_http_middleware(...) // Add HTTP middleware here
.build();
let transport = StreamableHttpTransport::new(config);
let client = ClientBuilder::new(transport)
.middleware_chain(protocol_chain)
.build();Sourcepub fn websocket() -> Self
pub fn websocket() -> Self
Create a WebSocket transport preset (metrics).
Includes:
MetricsMiddleware: Performance and error metrics
Note: WebSocket-specific features like reconnection and heartbeat are handled by the WebSocket transport itself, not middleware.
§Examples
use pmcp::shared::middleware_presets::PresetConfig;
let protocol_chain = PresetConfig::websocket().build_protocol_chain();Sourcepub fn build_protocol_chain(&self) -> EnhancedMiddlewareChain
pub fn build_protocol_chain(&self) -> EnhancedMiddlewareChain
Build a protocol-level middleware chain from this preset.
Creates an EnhancedMiddlewareChain with the middleware configured
for this preset’s transport type.
Currently includes:
MetricsMiddleware: Performance and error metrics tracking
Users can add additional middleware (logging, retry, etc.) via
.with_protocol_middleware() after using the preset.