[mio] 调整重连
This commit is contained in:
@@ -67,10 +67,15 @@ fn idle_gateway0<Call: VntCallback>(
|
|||||||
call: &Call,
|
call: &Call,
|
||||||
connect_count: &mut usize,
|
connect_count: &mut usize,
|
||||||
) {
|
) {
|
||||||
let cur = current_device.load();
|
if let Err(e) = check_gateway_channel(
|
||||||
if let Err(e) =
|
context,
|
||||||
check_gateway_channel(context, cur, config, tcp_socket_sender, call, connect_count)
|
current_device,
|
||||||
{
|
config,
|
||||||
|
tcp_socket_sender,
|
||||||
|
call,
|
||||||
|
connect_count,
|
||||||
|
) {
|
||||||
|
let cur = current_device.load();
|
||||||
call.error(ErrorInfo::new_msg(
|
call.error(ErrorInfo::new_msg(
|
||||||
ErrorType::Disconnect,
|
ErrorType::Disconnect,
|
||||||
format!("connect:{},error:{:?}", cur.connect_server, e),
|
format!("connect:{},error:{:?}", cur.connect_server, e),
|
||||||
@@ -105,16 +110,14 @@ fn idle_route0<Call: VntCallback>(
|
|||||||
|
|
||||||
fn check_gateway_channel<Call: VntCallback>(
|
fn check_gateway_channel<Call: VntCallback>(
|
||||||
context: &Context,
|
context: &Context,
|
||||||
current_device: CurrentDeviceInfo,
|
current_device: &AtomicCell<CurrentDeviceInfo>,
|
||||||
config: &BaseConfigInfo,
|
config: &BaseConfigInfo,
|
||||||
tcp_socket_sender: &AcceptSocketSender<(TcpStream, SocketAddr, Option<Vec<u8>>)>,
|
tcp_socket_sender: &AcceptSocketSender<(TcpStream, SocketAddr, Option<Vec<u8>>)>,
|
||||||
call: &Call,
|
call: &Call,
|
||||||
count: &mut usize,
|
count: &mut usize,
|
||||||
) -> io::Result<()> {
|
) -> io::Result<()> {
|
||||||
let gateway_route = context
|
let current_device = context.change_status(current_device);
|
||||||
.route_table
|
if current_device.status.offline() {
|
||||||
.route_one(¤t_device.virtual_gateway);
|
|
||||||
if gateway_route.is_none() {
|
|
||||||
*count += 1;
|
*count += 1;
|
||||||
if *count % 4 == 0 {
|
if *count % 4 == 0 {
|
||||||
context.change_main_index();
|
context.change_main_index();
|
||||||
@@ -122,6 +125,7 @@ fn check_gateway_channel<Call: VntCallback>(
|
|||||||
//需要重连
|
//需要重连
|
||||||
call.connect(ConnectInfo::new(*count, current_device.connect_server));
|
call.connect(ConnectInfo::new(*count, current_device.connect_server));
|
||||||
let request_packet = handshaker::handshake_request_packet(config.client_secret)?;
|
let request_packet = handshaker::handshake_request_packet(config.client_secret)?;
|
||||||
|
log::info!("发送握手请求,{:?}", config);
|
||||||
if let Err(e) = context.send_default(request_packet.buffer(), current_device.connect_server)
|
if let Err(e) = context.send_default(request_packet.buffer(), current_device.connect_server)
|
||||||
{
|
{
|
||||||
log::warn!("{:?}", e);
|
log::warn!("{:?}", e);
|
||||||
|
|||||||
Reference in New Issue
Block a user