#connection-pool #ssl #tcp #connection-manager #client-connection

net-utils

提供TCP/SSL连接客户端连接池的网络实用库

5个版本

使用旧的Rust 2015

0.0.5 2018年1月1日
0.0.4 2017年12月3日
0.0.3 2017年4月3日
0.0.2 2016年1月12日
0.0.1 2015年12月24日

#14 in #connection-manager

MIT/Apache

40KB
919

net-utils

Build Status

提供包括TCP/SSL连接和连接管理器的网络实用工具。

以下是使用连接池的示例。

在Cargo.toml中定义以下依赖项

[dependencies.net-utils]
git = "https://github.com/rohitjoshi/net-utils.git"

以下是main.rs

extern crate "net-utils" as utils;
use std::default::Default;
use std::sync::{ Arc, Mutex };


use utils::net::config;
use utils::net::poolmgr;
fn main() {
    let mut cfg : config::Config = Default::default();
    //set port to 80
    cfg.port= Some(80);
    //set host to
    cfg.server = Some("google.com".to_string());
    let mut pool = poolmgr::ConnectionPool::new(2, 20, true, &cfg);
    //get the connection
    let mut conn = pool.aquire().unwrap();
    conn.writer.write_str("GET google.com\r\n").unwrap();
    conn.writer.flush().unwrap();
    let r = conn.reader.read_line();
    println!("Received {}", r);
    pool.release(conn);
}

以下是上述示例在多线程环境中的使用

extern crate "net-utils" as utils;
use std::default::Default;
use std::sync::{ Arc, Mutex };


use utils::net::config;
use utils::net::poolmgr;

fn main() {
    let mut cfg : config::Config = Default::default();
    //set port to 80
    cfg.port= Some(80);
    //set host to
    cfg.server = Some("google.com".to_string());
    let mut pool = poolmgr::ConnectionPool::new(2, 20, true, &cfg);
    let pool = Arc::new(Mutex::new(pool));
    for _ in range(0u, 2) {
        let pool = pool.clone();
        spawn(move || {
            let mut conn = pool.lock().aquire().unwrap();
            conn.writer.write_str("GET google.com\r\n").unwrap();
            conn.writer.flush().unwrap();
            let r = conn.reader.read_line();
            println!("Received {}", r);
            pool.lock().release(conn);
       });
    }
}

要启用SSL连接,使用--feature ssl进行编译,例如:要执行SSL测试用例,请运行cargo test --features ssl

许可证

根据您选择,许可协议为

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,将根据上述方式双许可,不附加任何额外条款或条件。

依赖项

~2.2–3.5MB
~72K SLoC