* Copyright (C) 2024 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#[allow(unused_imports)]
use crate::daemon_lib::daemon_app;
use crate::daemon_lib::shell;
use crate::daemon_lib::auth;
#[allow(unused_imports)]
use crate::common::forward;
#[allow(unused_imports)]
use crate::common::jdwp;
#[allow(unused_imports)]
use crate::common::hdcfile;
#[allow(unused_imports)]
use crate::utils::hdc_log::*;
use crate::config::ConnectType;
use crate::transfer::buffer;
use crate::transfer::TcpMap;
use crate::transfer::UsbMap;
use crate::transfer::ConnectTypeMap;
pub async fn free_all_sessiones() {
let sessiones = ConnectTypeMap::get_all_session().await;
for session_id in sessiones {
free_session(session_id).await;
}
}
pub async fn free_session(session_id: u32) {
auth::AuthStatusMap::remove(session_id).await;
stop_task(session_id).await;
match ConnectTypeMap::get(session_id).await {
Some(ConnectType::Bt) => {}
Some(ConnectType::Tcp) => {
TcpMap::end(session_id).await;
}
Some(ConnectType::Uart) => {}
Some(ConnectType::Usb(_)) => {
UsbMap::end(session_id).await;
}
Some(ConnectType::HostUsb(_)) => {
}
Some(ConnectType::Bridge) => {}
None => {
crate::warn!("free_session cannot find connect type for session_id:{session_id}");
}
}
}
pub async fn stop_task(session_id: u32) {
hdcfile::stop_task(session_id).await;
shell::stop_task(session_id).await;
daemon_app::stop_task(session_id).await;
forward::stop_task(session_id).await;
jdwp::stop_session_task(session_id).await;
}
pub async fn dump_running_task_info() -> String {
let mut result = "\n".to_string();
result.push_str(&format!("{:#}", buffer::dump_session().await));
result.push_str(&format!("{:#}", hdcfile::dump_task().await));
result.push_str(&format!("{:#}", shell::dump_task().await));
result.push_str(&format!("{:#}", daemon_app::dump_task().await));
result.push_str(&format!("{:#}", forward::dump_task().await));
result.push_str("# ");
result.to_string()
}