Skip to content

Commit 4097f5e

Browse files
committed
feat: add cancellation token support to connection methods across transport layers
1 parent 24f0f5f commit 4097f5e

File tree

20 files changed

+144
-31
lines changed

20 files changed

+144
-31
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "rsipstack"
3-
version = "0.2.26"
3+
version = "0.2.27"
44
edition = "2021"
55
description = "SIP Stack Rust library for building SIP applications"
66
license = "MIT"

examples/client/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ async fn main() -> rsipstack::Result<()> {
174174
let mut connection = UdpConnection::create_connection(
175175
format!("{}:{}", addr, args.port).parse()?,
176176
external.clone(),
177+
Some(token.child_token()),
177178
)
178179
.await?;
179180

examples/client/play_file.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ pub async fn build_rtp_conn(
2121
for p in 0..100 {
2222
let port = opt.rtp_start_port + p * 2;
2323
if let Ok(c) =
24-
UdpConnection::create_connection(format!("{:?}:{}", addr, port).parse()?, None).await
24+
UdpConnection::create_connection(format!("{:?}:{}", addr, port).parse()?, None, None)
25+
.await
2526
{
2627
conn = Some(c);
2728
break;

examples/proxy.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ async fn main() -> Result<()> {
128128
let connection = UdpConnection::create_connection(
129129
format!("{}:{}", addr, args.port).parse()?,
130130
external.clone(),
131+
None,
131132
)
132133
.await?;
133134
transport_layer.add_transport(connection.into());
@@ -630,12 +631,13 @@ async fn handle_websocket(client_addr: ClientAddr, socket: WebSocket, _state: Ap
630631
r#type: Some(transport_type),
631632
addr: client_addr.0.into(),
632633
};
633-
634+
let ws_token = CancellationToken::new();
634635
// Create the ChannelConnection
635636
let connection = match ChannelConnection::create_connection(
636637
from_ws_rx,
637638
to_ws_tx,
638639
local_addr.clone(),
640+
Some(ws_token),
639641
)
640642
.await
641643
{
@@ -784,7 +786,7 @@ mod tests {
784786
let token = CancellationToken::new();
785787
let transport_layer = TransportLayer::new(token.clone());
786788

787-
let udp_conn = UdpConnection::create_connection("127.0.0.1:0".parse().unwrap(), None)
789+
let udp_conn = UdpConnection::create_connection("127.0.0.1:0".parse().unwrap(), None, None)
788790
.await
789791
.unwrap();
790792
transport_layer.add_transport(udp_conn.into());
@@ -906,7 +908,7 @@ mod tests {
906908
let transport_layer = TransportLayer::new(token.clone());
907909

908910
// Test that we can add UDP transport
909-
let udp_conn = UdpConnection::create_connection("127.0.0.1:0".parse().unwrap(), None)
911+
let udp_conn = UdpConnection::create_connection("127.0.0.1:0".parse().unwrap(), None, None)
910912
.await
911913
.unwrap();
912914
transport_layer.add_transport(udp_conn.into());
@@ -945,6 +947,7 @@ mod tests {
945947
to_transport_rx,
946948
from_transport_tx.clone(),
947949
local_addr.clone(),
950+
None,
948951
)
949952
.await
950953
.expect("Should create channel connection");

src/bin/bench_ua.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,8 @@ async fn main() -> Result<()> {
358358

359359
// Setup UDP connection
360360
let addr = format!("0.0.0.0:{}", args.port);
361-
let connection = UdpConnection::create_connection(addr.parse()?, None).await?;
361+
let connection =
362+
UdpConnection::create_connection(addr.parse()?, None, Some(token.child_token())).await?;
362363
transport_layer.add_transport(connection.into());
363364

364365
let endpoint = EndpointBuilder::new()

src/dialog/tests/test_dialog_layer.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@ fn create_invite_request(from_tag: &str, to_tag: &str, call_id: &str, branch: &s
5050

5151
/// Test helper to create mock connection
5252
async fn create_mock_connection() -> crate::Result<crate::transport::SipConnection> {
53-
// 使用随机端口创建UDP连接
54-
let udp_conn = UdpConnection::create_connection("127.0.0.1:0".parse()?, None).await?;
53+
let udp_conn = UdpConnection::create_connection("127.0.0.1:0".parse()?, None, None).await?;
5554
Ok(udp_conn.into())
5655
}
5756

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@
162162
//! # async fn example() -> rsipstack::Result<()> {
163163
//! # let cancel_token = CancellationToken::new();
164164
//! let transport_layer = TransportLayer::new(cancel_token.child_token());
165-
//! let udp_conn = UdpConnection::create_connection("0.0.0.0:5060".parse()?, None).await?;
165+
//! let udp_conn = UdpConnection::create_connection("0.0.0.0:5060".parse()?, None, Some(cancel_token.child_token())).await?;
166166
//! transport_layer.add_transport(udp_conn.into());
167167
//!
168168
//! let endpoint = EndpointBuilder::new()

src/transaction/tests/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ pub(super) async fn create_test_endpoint(addr: Option<&str>) -> Result<Endpoint>
1515
let tl = TransportLayer::new(token.child_token());
1616

1717
if let Some(addr) = addr {
18-
let peer = UdpConnection::create_connection(addr.parse()?, None).await?;
18+
let peer = UdpConnection::create_connection(addr.parse()?, None, None).await?;
1919
tl.add_transport(peer.into());
2020
}
2121

src/transaction/tests/test_client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ async fn test_client_transaction() -> Result<()> {
1717
.to_owned();
1818
info!("server addr: {}", server_addr);
1919

20-
let peer_server = UdpConnection::create_connection("127.0.0.1:0".parse()?, None).await?;
20+
let peer_server = UdpConnection::create_connection("127.0.0.1:0".parse()?, None, None).await?;
2121
let peer_server_loop = async {
2222
let (sender, mut recevier) = unbounded_channel();
2323
select! {

src/transaction/tests/test_endpoint.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ async fn test_endpoint_recvrequests() {
5757
let test_conn = crate::transport::udp::UdpConnection::create_connection(
5858
"127.0.0.1:0".parse().unwrap(),
5959
None,
60+
None,
6061
)
6162
.await
6263
.expect("create_connection");

0 commit comments

Comments
 (0)