优化启动速度
This commit is contained in:
+14
-12
@@ -280,34 +280,36 @@ impl VntUtil {
|
|||||||
let channel = Channel::new(context.clone(), channel_recv_handler);
|
let channel = Channel::new(context.clone(), channel_recv_handler);
|
||||||
let channel_worker = vnt_status_manager.worker("channel_worker");
|
let channel_worker = vnt_status_manager.worker("channel_worker");
|
||||||
let relay = config.relay;
|
let relay = config.relay;
|
||||||
if let Some(tcp_proxy) = tcp_proxy {
|
|
||||||
tokio::spawn(tcp_proxy.start());
|
|
||||||
}
|
|
||||||
if let Some(udp_proxy) = udp_proxy {
|
|
||||||
tokio::spawn(udp_proxy.start());
|
|
||||||
}
|
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
channel.start(channel_worker, tcp, 14, 65, relay, config.parallel).await
|
channel.start(channel_worker, tcp, 14, 65, relay, config.parallel).await
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
let other_worker = vnt_status_manager.worker("punch_handler");
|
|
||||||
let nat_test = nat_test.clone();
|
let nat_test = nat_test.clone();
|
||||||
let device_list = device_list.clone();
|
let device_list = device_list.clone();
|
||||||
let current_device = current_device.clone();
|
let current_device = current_device.clone();
|
||||||
// 定时心跳
|
// 定时心跳
|
||||||
heartbeat_handler::start_heartbeat(other_worker.worker("heartbeat"), channel_sender.clone(), device_list.clone(),
|
heartbeat_handler::start_heartbeat(vnt_status_manager.worker("heartbeat"), channel_sender.clone(), device_list.clone(),
|
||||||
current_device.clone(), config.server_address_str, client_cipher.clone(), self.server_cipher.clone());
|
current_device.clone(), config.server_address_str, client_cipher.clone(), self.server_cipher.clone());
|
||||||
// 空闲检查
|
// 空闲检查
|
||||||
heartbeat_handler::start_idle(other_worker.worker("idle"), idle, channel_sender.clone());
|
heartbeat_handler::start_idle(vnt_status_manager.worker("idle"), idle, channel_sender.clone());
|
||||||
if !config.relay {
|
if !config.relay {
|
||||||
// 打洞处理
|
// 打洞处理
|
||||||
punch_handler::start(other_worker.worker("cone_receiver"), cone_receiver, punch.clone(), current_device.clone(), client_cipher.clone());
|
punch_handler::start(vnt_status_manager.worker("cone_receiver"), cone_receiver, punch.clone(), current_device.clone(), client_cipher.clone());
|
||||||
punch_handler::start(other_worker.worker("symmetric_receiver"), symmetric_receiver, punch, current_device.clone(), client_cipher.clone());
|
punch_handler::start(vnt_status_manager.worker("symmetric_receiver"), symmetric_receiver, punch, current_device.clone(), client_cipher.clone());
|
||||||
tokio::spawn(punch_handler::start_punch(other_worker, nat_test,
|
tokio::spawn(punch_handler::start_punch(vnt_status_manager.worker("punch_handler"), nat_test,
|
||||||
device_list, channel_sender, current_device, client_cipher.clone()));
|
device_list, channel_sender, current_device, client_cipher.clone()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
//代理
|
||||||
|
if let Some(tcp_proxy) = tcp_proxy {
|
||||||
|
tokio::spawn(tcp_proxy.start());
|
||||||
|
}
|
||||||
|
if let Some(udp_proxy) = udp_proxy {
|
||||||
|
tokio::spawn(udp_proxy.start());
|
||||||
|
}
|
||||||
|
}
|
||||||
context.switch(nat_test.nat_info().nat_type);
|
context.switch(nat_test.nat_info().nat_type);
|
||||||
Ok(Vnt {
|
Ok(Vnt {
|
||||||
config: self.config,
|
config: self.config,
|
||||||
|
|||||||
+20
-6
@@ -96,17 +96,31 @@ impl NatTest {
|
|||||||
) -> NatTest {
|
) -> NatTest {
|
||||||
let server = stun_server[0].clone();
|
let server = stun_server[0].clone();
|
||||||
stun_server.resize(3, server);
|
stun_server.resize(3, server);
|
||||||
let info = NatTest::re_test_(
|
let nat_info = NatInfo::new(
|
||||||
&stun_server,
|
vec![public_ip],
|
||||||
public_ip,
|
|
||||||
public_port,
|
public_port,
|
||||||
|
0,
|
||||||
local_ipv4_addr,
|
local_ipv4_addr,
|
||||||
ipv6_addr,
|
ipv6_addr,
|
||||||
).await;
|
NatType::Cone,
|
||||||
NatTest {
|
);
|
||||||
|
let info = Arc::new(Mutex::new(nat_info));
|
||||||
|
let nat_test = NatTest {
|
||||||
stun_server,
|
stun_server,
|
||||||
info: Arc::new(Mutex::new(info)),
|
info,
|
||||||
|
};
|
||||||
|
{
|
||||||
|
let nat_test = nat_test.clone();
|
||||||
|
tokio::spawn(async move {
|
||||||
|
let _ = nat_test.re_test(
|
||||||
|
public_ip,
|
||||||
|
public_port,
|
||||||
|
local_ipv4_addr,
|
||||||
|
ipv6_addr,
|
||||||
|
).await;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
nat_test
|
||||||
}
|
}
|
||||||
pub fn nat_info(&self) -> NatInfo {
|
pub fn nat_info(&self) -> NatInfo {
|
||||||
self.info.lock().clone()
|
self.info.lock().clone()
|
||||||
|
|||||||
Reference in New Issue
Block a user