Skip to content

Commit 2361eca

Browse files
committed
fix: support for non_exhaustive StreamableHttpServerConfig
1 parent c45e30f commit 2361eca

File tree

1 file changed

+24
-33
lines changed

1 file changed

+24
-33
lines changed

crates/rmcp/tests/test_streamable_http_session_store.rs

Lines changed: 24 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,14 @@ fn make_service(
7171
session_store: Arc<dyn SessionStore>,
7272
ct: &CancellationToken,
7373
) -> StreamableHttpService<Calculator, LocalSessionManager> {
74-
StreamableHttpService::new(
75-
|| Ok(Calculator::new()),
76-
Default::default(),
77-
StreamableHttpServerConfig {
78-
stateful_mode: true,
79-
sse_keep_alive: None,
80-
cancellation_token: ct.child_token(),
81-
session_store: Some(session_store),
82-
..Default::default()
83-
},
84-
)
74+
StreamableHttpService::new(|| Ok(Calculator::new()), Default::default(), {
75+
let mut cfg = StreamableHttpServerConfig::default();
76+
cfg.stateful_mode = true;
77+
cfg.sse_keep_alive = None;
78+
cfg.cancellation_token = ct.child_token();
79+
cfg.session_store = Some(session_store);
80+
cfg
81+
})
8582
}
8683

8784
// ---------------------------------------------------------------------------
@@ -148,17 +145,14 @@ async fn test_session_state_deleted_from_store_on_delete() -> anyhow::Result<()>
148145
let session_manager = Arc::new(LocalSessionManager::default());
149146
let ct = CancellationToken::new();
150147

151-
let service = StreamableHttpService::new(
152-
|| Ok(Calculator::new()),
153-
session_manager.clone(),
154-
StreamableHttpServerConfig {
155-
stateful_mode: true,
156-
sse_keep_alive: None,
157-
cancellation_token: ct.child_token(),
158-
session_store: Some(store.clone()),
159-
..Default::default()
160-
},
161-
);
148+
let service = StreamableHttpService::new(|| Ok(Calculator::new()), session_manager.clone(), {
149+
let mut cfg = StreamableHttpServerConfig::default();
150+
cfg.stateful_mode = true;
151+
cfg.sse_keep_alive = None;
152+
cfg.cancellation_token = ct.child_token();
153+
cfg.session_store = Some(store.clone());
154+
cfg
155+
});
162156

163157
let router = axum::Router::new().nest_service("/mcp", service);
164158
let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await?;
@@ -223,17 +217,14 @@ fn spawn_server(
223217
session_manager: Arc<LocalSessionManager>,
224218
ct: &CancellationToken,
225219
) -> (std::net::SocketAddr, tokio::task::JoinHandle<()>) {
226-
let svc = StreamableHttpService::new(
227-
|| Ok(Calculator::new()),
228-
session_manager,
229-
StreamableHttpServerConfig {
230-
stateful_mode: true,
231-
sse_keep_alive: None,
232-
cancellation_token: ct.child_token(),
233-
session_store,
234-
..Default::default()
235-
},
236-
);
220+
let svc = StreamableHttpService::new(|| Ok(Calculator::new()), session_manager, {
221+
let mut cfg = StreamableHttpServerConfig::default();
222+
cfg.stateful_mode = true;
223+
cfg.sse_keep_alive = None;
224+
cfg.cancellation_token = ct.child_token();
225+
cfg.session_store = session_store;
226+
cfg
227+
});
237228
// Use std::net::TcpListener so the port is bound synchronously before
238229
// we return — avoids a race between returning the addr and the server
239230
// actually starting to accept connections.

0 commit comments

Comments
 (0)