VideoConnCount for future use
This commit is contained in:
parent
b4c51f3d41
commit
7e263af75f
10
src/ipc.rs
10
src/ipc.rs
@ -233,6 +233,7 @@ pub enum Data {
|
|||||||
ControlledSessionCount(usize),
|
ControlledSessionCount(usize),
|
||||||
CmErr(String),
|
CmErr(String),
|
||||||
CheckHwcodec,
|
CheckHwcodec,
|
||||||
|
VideoConnCount(Option<usize>),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::main(flavor = "current_thread")]
|
#[tokio::main(flavor = "current_thread")]
|
||||||
@ -382,6 +383,15 @@ async fn handle(data: Data, stream: &mut Connection) {
|
|||||||
log::info!("socks updated");
|
log::info!("socks updated");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Data::VideoConnCount(None) => {
|
||||||
|
let n = crate::server::AUTHED_CONNS
|
||||||
|
.lock()
|
||||||
|
.unwrap()
|
||||||
|
.iter()
|
||||||
|
.filter(|x| x.1 == crate::server::AuthConnType::Remote)
|
||||||
|
.count();
|
||||||
|
allow_err!(stream.send(&Data::VideoConnCount(Some(n))).await);
|
||||||
|
}
|
||||||
Data::Config((name, value)) => match value {
|
Data::Config((name, value)) => match value {
|
||||||
None => {
|
None => {
|
||||||
let value;
|
let value;
|
||||||
|
@ -69,7 +69,7 @@ lazy_static::lazy_static! {
|
|||||||
static ref LOGIN_FAILURES: [Arc::<Mutex<HashMap<String, (i32, i32, i32)>>>; 2] = Default::default();
|
static ref LOGIN_FAILURES: [Arc::<Mutex<HashMap<String, (i32, i32, i32)>>>; 2] = Default::default();
|
||||||
static ref SESSIONS: Arc::<Mutex<HashMap<String, Session>>> = Default::default();
|
static ref SESSIONS: Arc::<Mutex<HashMap<String, Session>>> = Default::default();
|
||||||
static ref ALIVE_CONNS: Arc::<Mutex<Vec<i32>>> = Default::default();
|
static ref ALIVE_CONNS: Arc::<Mutex<Vec<i32>>> = Default::default();
|
||||||
static ref AUTHED_CONNS: Arc::<Mutex<Vec<(i32, AuthConnType)>>> = Default::default();
|
pub static ref AUTHED_CONNS: Arc::<Mutex<Vec<(i32, AuthConnType)>>> = Default::default();
|
||||||
static ref SWITCH_SIDES_UUID: Arc::<Mutex<HashMap<String, (Instant, uuid::Uuid)>>> = Default::default();
|
static ref SWITCH_SIDES_UUID: Arc::<Mutex<HashMap<String, (Instant, uuid::Uuid)>>> = Default::default();
|
||||||
static ref WAKELOCK_SENDER: Arc::<Mutex<std::sync::mpsc::Sender<(usize, usize)>>> = Arc::new(Mutex::new(start_wakelock_thread()));
|
static ref WAKELOCK_SENDER: Arc::<Mutex<std::sync::mpsc::Sender<(usize, usize)>>> = Arc::new(Mutex::new(start_wakelock_thread()));
|
||||||
}
|
}
|
||||||
|
@ -78,9 +78,10 @@ struct IpcTaskRunner<T: InvokeUiCM> {
|
|||||||
|
|
||||||
lazy_static::lazy_static! {
|
lazy_static::lazy_static! {
|
||||||
static ref CLIENTS: RwLock<HashMap<i32, Client>> = Default::default();
|
static ref CLIENTS: RwLock<HashMap<i32, Client>> = Default::default();
|
||||||
static ref CLICK_TIME: AtomicI64 = AtomicI64::new(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static CLICK_TIME: AtomicI64 = AtomicI64::new(0);
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct ConnectionManager<T: InvokeUiCM> {
|
pub struct ConnectionManager<T: InvokeUiCM> {
|
||||||
pub ui_handler: T,
|
pub ui_handler: T,
|
||||||
|
@ -3,9 +3,7 @@ use hbb_common::password_security;
|
|||||||
use hbb_common::{
|
use hbb_common::{
|
||||||
allow_err,
|
allow_err,
|
||||||
bytes::Bytes,
|
bytes::Bytes,
|
||||||
config::{
|
config::{self, Config, LocalConfig, PeerConfig, CONNECT_TIMEOUT, RENDEZVOUS_PORT},
|
||||||
self, Config, LocalConfig, PeerConfig, CONNECT_TIMEOUT, RENDEZVOUS_PORT,
|
|
||||||
},
|
|
||||||
directories_next,
|
directories_next,
|
||||||
futures::future::join_all,
|
futures::future::join_all,
|
||||||
log,
|
log,
|
||||||
@ -22,6 +20,7 @@ use serde_derive::Serialize;
|
|||||||
use std::process::Child;
|
use std::process::Child;
|
||||||
use std::{
|
use std::{
|
||||||
collections::HashMap,
|
collections::HashMap,
|
||||||
|
sync::atomic::{AtomicUsize, Ordering},
|
||||||
sync::{Arc, Mutex},
|
sync::{Arc, Mutex},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -69,6 +68,8 @@ lazy_static::lazy_static! {
|
|||||||
static ref TEMPORARY_PASSWD : Arc<Mutex<String>> = Arc::new(Mutex::new("".to_owned()));
|
static ref TEMPORARY_PASSWD : Arc<Mutex<String>> = Arc::new(Mutex::new("".to_owned()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub static VIDEO_CONN_COUNT: AtomicUsize = AtomicUsize::new(0);
|
||||||
|
|
||||||
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
||||||
lazy_static::lazy_static! {
|
lazy_static::lazy_static! {
|
||||||
static ref OPTION_SYNCED: Arc<Mutex<bool>> = Default::default();
|
static ref OPTION_SYNCED: Arc<Mutex<bool>> = Default::default();
|
||||||
@ -723,10 +724,16 @@ pub fn change_id(id: String) {
|
|||||||
pub fn http_request(url: String, method: String, body: Option<String>, header: String) {
|
pub fn http_request(url: String, method: String, body: Option<String>, header: String) {
|
||||||
// Respond to concurrent requests for resources
|
// Respond to concurrent requests for resources
|
||||||
let current_request = ASYNC_HTTP_STATUS.clone();
|
let current_request = ASYNC_HTTP_STATUS.clone();
|
||||||
current_request.lock().unwrap().insert(url.clone()," ".to_owned());
|
current_request
|
||||||
|
.lock()
|
||||||
|
.unwrap()
|
||||||
|
.insert(url.clone(), " ".to_owned());
|
||||||
std::thread::spawn(move || {
|
std::thread::spawn(move || {
|
||||||
let res = match crate::http_request_sync(url.clone(), method, body, header) {
|
let res = match crate::http_request_sync(url.clone(), method, body, header) {
|
||||||
Err(err) => { log::error!("{}", err); err.to_string() },
|
Err(err) => {
|
||||||
|
log::error!("{}", err);
|
||||||
|
err.to_string()
|
||||||
|
}
|
||||||
Ok(text) => text,
|
Ok(text) => text,
|
||||||
};
|
};
|
||||||
current_request.lock().unwrap().insert(url, res);
|
current_request.lock().unwrap().insert(url, res);
|
||||||
@ -735,12 +742,11 @@ pub fn http_request(url: String, method: String, body: Option<String>, header: S
|
|||||||
#[inline]
|
#[inline]
|
||||||
pub fn get_async_http_status(url: String) -> Option<String> {
|
pub fn get_async_http_status(url: String) -> Option<String> {
|
||||||
match ASYNC_HTTP_STATUS.lock().unwrap().get(&url) {
|
match ASYNC_HTTP_STATUS.lock().unwrap().get(&url) {
|
||||||
None => {None}
|
None => None,
|
||||||
Some(_str) => {Some(_str.to_string())}
|
Some(_str) => Some(_str.to_string()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn post_request(url: String, body: String, header: String) {
|
pub fn post_request(url: String, body: String, header: String) {
|
||||||
*ASYNC_JOB_STATUS.lock().unwrap() = " ".to_owned();
|
*ASYNC_JOB_STATUS.lock().unwrap() = " ".to_owned();
|
||||||
@ -1116,6 +1122,9 @@ async fn check_connect_status_(reconnect: bool, rx: mpsc::UnboundedReceiver<ipc:
|
|||||||
*TEMPORARY_PASSWD.lock().unwrap() = value;
|
*TEMPORARY_PASSWD.lock().unwrap() = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Ok(Some(ipc::Data::VideoConnCount(Some(n)))) => {
|
||||||
|
VIDEO_CONN_COUNT.store(n, Ordering::Relaxed);
|
||||||
|
}
|
||||||
Ok(Some(ipc::Data::OnlineStatus(Some((mut x, _c))))) => {
|
Ok(Some(ipc::Data::OnlineStatus(Some((mut x, _c))))) => {
|
||||||
if x > 0 {
|
if x > 0 {
|
||||||
x = 1
|
x = 1
|
||||||
@ -1145,6 +1154,7 @@ async fn check_connect_status_(reconnect: bool, rx: mpsc::UnboundedReceiver<ipc:
|
|||||||
c.send(&ipc::Data::Options(None)).await.ok();
|
c.send(&ipc::Data::Options(None)).await.ok();
|
||||||
c.send(&ipc::Data::Config(("id".to_owned(), None))).await.ok();
|
c.send(&ipc::Data::Config(("id".to_owned(), None))).await.ok();
|
||||||
c.send(&ipc::Data::Config(("temporary-password".to_owned(), None))).await.ok();
|
c.send(&ipc::Data::Config(("temporary-password".to_owned(), None))).await.ok();
|
||||||
|
c.send(&ipc::Data::VideoConnCount(None)).await.ok();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user