tcp-pool

Crates.iotcp-pool
lib.rstcp-pool
version0.4.1
created_at2025-07-30 08:53:57.842586+00
updated_at2025-09-19 09:01:42.107247+00
descriptionA tcp pool
homepage
repository
max_upload_size
id1773281
size22,404
(xiaoquanjie)

documentation

https://docs.rs/tcp-pool

README

tcp连接池

async fn main() {
    init_log();

    let addr = Address::from("baidu.com:80");

    let pool = Arc::new(tcp_pool::Pool::default());

    // 池里加bs
    pool.add_backend(addr.clone());

    // 设置最大数量
    pool.set_max_conn(Some(1));

    // 获取第一个连接,应该成功
    let r1 = pool.clone().get("").await;
    assert_eq!(r1.is_ok(), true);

    // 获取第二个应该会报池满了的错误
    let r2 = pool.clone().get("").await;
    assert_eq!(r2.is_err(), true);
    if let Err(net_pool::Error::PoolFull) = r2 {
    } else {
        assert!(false);
    }

    // 当前计数为1
    assert_eq!(pool.get_cur_conn(), 1);
    // 释放r1
    drop(r1);
    // 记数回归0
    assert_eq!(pool.get_cur_conn(), 0);
}
Commit count: 0

cargo fmt