重构上传
This commit is contained in:
+1
-1
@@ -20,7 +20,6 @@ fn init_jvm(env: &mut Env) {
|
||||
return;
|
||||
}
|
||||
if let Ok(vm) = env.get_java_vm() {
|
||||
// 关键:在调用线程(Java 线程)上 find_class,此时 classloader 正确
|
||||
if let Ok(class) = env.find_class(jni_str!("net/bluemangoo/indpjsk/vpn/VpnBridge")) {
|
||||
match env.new_global_ref(class) {
|
||||
Ok(g) => {
|
||||
@@ -186,6 +185,7 @@ pub extern "system" fn Java_net_bluemangoo_indpjsk_vpn_VpnBridge_boot(
|
||||
id: step.id,
|
||||
path: re,
|
||||
save_path: step.save_path,
|
||||
repeat: step.repeat,
|
||||
});
|
||||
}
|
||||
if hosts.is_empty() {
|
||||
|
||||
+11
-1
@@ -374,12 +374,17 @@ pub struct StepSpec {
|
||||
pub path: String,
|
||||
#[serde(rename = "savePath")]
|
||||
pub save_path: String,
|
||||
/// 持续运行:命中后不摘除 waiter,同类型的包可以反复抓
|
||||
#[serde(default)]
|
||||
pub repeat: bool,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Waiter {
|
||||
pub id: String,
|
||||
pub path: Regex,
|
||||
pub save_path: String,
|
||||
pub repeat: bool,
|
||||
}
|
||||
|
||||
pub type Waiters = Arc<StdMutex<Vec<Waiter>>>;
|
||||
@@ -387,7 +392,12 @@ pub type Waiters = Arc<StdMutex<Vec<Waiter>>>;
|
||||
fn take_matching_waiter(waiters: &StdMutex<Vec<Waiter>>, path_and_query: &str) -> Option<Waiter> {
|
||||
let mut list = waiters.lock().unwrap();
|
||||
let idx = list.iter().position(|w| w.path.is_match(path_and_query))?;
|
||||
Some(list.remove(idx))
|
||||
if list[idx].repeat {
|
||||
// 持续运行:保留 waiter,让后续同类型的请求继续命中
|
||||
Some(list[idx].clone())
|
||||
} else {
|
||||
Some(list.remove(idx))
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
|
||||
Reference in New Issue
Block a user