This commit is contained in:
sxyazi 2023-12-29 20:09:20 +08:00
parent 49d10a0623
commit ca18edd44b
No known key found for this signature in database
4 changed files with 27 additions and 29 deletions

View file

@ -8,7 +8,7 @@ use yazi_config::TASKS;
use yazi_shared::fs::{calculate_size, copy_with_progress, path_relative_to, Url}; use yazi_shared::fs::{calculate_size, copy_with_progress, path_relative_to, Url};
use super::{FileOp, FileOpDelete, FileOpLink, FileOpPaste, FileOpTrash}; use super::{FileOp, FileOpDelete, FileOpLink, FileOpPaste, FileOpTrash};
use crate::{TaskOp, TaskProg, LOW, VERY_LOW}; use crate::{TaskOp, TaskProg, _LOW, _NORMAL};
pub struct File { pub struct File {
macro_: async_priority_channel::Sender<TaskOp, u8>, macro_: async_priority_channel::Sender<TaskOp, u8>,
@ -53,7 +53,7 @@ impl File {
{ {
self.log(task.id, format!("Paste task retry: {:?}", task))?; self.log(task.id, format!("Paste task retry: {:?}", task))?;
task.retry += 1; task.retry += 1;
return Ok(self.macro_.send(FileOp::Paste(task).into(), VERY_LOW).await?); return Ok(self.macro_.send(FileOp::Paste(task).into(), _LOW).await?);
} }
Err(e) => Err(e)?, Err(e) => Err(e)?,
} }
@ -147,9 +147,9 @@ impl File {
self.prog.send(TaskProg::New(id, meta.len()))?; self.prog.send(TaskProg::New(id, meta.len()))?;
if meta.is_file() { if meta.is_file() {
self.macro_.send(FileOp::Paste(task).into(), VERY_LOW).await?; self.macro_.send(FileOp::Paste(task).into(), _LOW).await?;
} else if meta.is_symlink() { } else if meta.is_symlink() {
self.macro_.send(FileOp::Link(task.to_link(meta)).into(), LOW).await?; self.macro_.send(FileOp::Link(task.to_link(meta)).into(), _NORMAL).await?;
} }
return self.succ(id); return self.succ(id);
} }
@ -193,9 +193,9 @@ impl File {
self.prog.send(TaskProg::New(task.id, meta.len()))?; self.prog.send(TaskProg::New(task.id, meta.len()))?;
if meta.is_file() { if meta.is_file() {
self.macro_.send(FileOp::Paste(task.clone()).into(), VERY_LOW).await?; self.macro_.send(FileOp::Paste(task.clone()).into(), _LOW).await?;
} else if meta.is_symlink() { } else if meta.is_symlink() {
self.macro_.send(FileOp::Link(task.to_link(meta)).into(), LOW).await?; self.macro_.send(FileOp::Link(task.to_link(meta)).into(), _NORMAL).await?;
} }
} }
} }
@ -209,7 +209,7 @@ impl File {
} }
self.prog.send(TaskProg::New(id, task.meta.as_ref().unwrap().len()))?; self.prog.send(TaskProg::New(id, task.meta.as_ref().unwrap().len()))?;
self.macro_.send(FileOp::Link(task).into(), LOW).await?; self.macro_.send(FileOp::Link(task).into(), _NORMAL).await?;
self.succ(id) self.succ(id)
} }
@ -219,7 +219,7 @@ impl File {
let id = task.id; let id = task.id;
task.length = meta.len(); task.length = meta.len();
self.prog.send(TaskProg::New(id, meta.len()))?; self.prog.send(TaskProg::New(id, meta.len()))?;
self.macro_.send(FileOp::Delete(task).into(), LOW).await?; self.macro_.send(FileOp::Delete(task).into(), _NORMAL).await?;
return self.succ(id); return self.succ(id);
} }
@ -244,7 +244,7 @@ impl File {
task.target = Url::from(entry.path()); task.target = Url::from(entry.path());
task.length = meta.len(); task.length = meta.len();
self.prog.send(TaskProg::New(task.id, meta.len()))?; self.prog.send(TaskProg::New(task.id, meta.len()))?;
self.macro_.send(FileOp::Delete(task.clone()).into(), LOW).await?; self.macro_.send(FileOp::Delete(task.clone()).into(), _NORMAL).await?;
} }
} }
self.succ(task.id) self.succ(task.id)
@ -255,7 +255,7 @@ impl File {
task.length = calculate_size(&task.target).await; task.length = calculate_size(&task.target).await;
self.prog.send(TaskProg::New(id, task.length))?; self.prog.send(TaskProg::New(id, task.length))?;
self.macro_.send(FileOp::Trash(task).into(), VERY_LOW).await?; self.macro_.send(FileOp::Trash(task).into(), _LOW).await?;
self.succ(id) self.succ(id)
} }

View file

@ -16,10 +16,8 @@ pub use running::*;
pub use scheduler::*; pub use scheduler::*;
pub use task::*; pub use task::*;
const VERY_LOW: u8 = 0; const _LOW: u8 = 0;
const LOW: u8 = 1; const _NORMAL: u8 = 1;
const NORMAL: u8 = 2; const _HIGH: u8 = 2;
const HIGH: u8 = 3;
const VERY_HIGH: u8 = 4;
pub fn init() { init_blocker(); } pub fn init() { init_blocker(); }

View file

@ -2,7 +2,7 @@ use anyhow::Result;
use tokio::sync::mpsc; use tokio::sync::mpsc;
use super::{PluginOp, PluginOpEntry}; use super::{PluginOp, PluginOpEntry};
use crate::{TaskOp, TaskProg, NORMAL}; use crate::{TaskOp, TaskProg, _HIGH};
pub struct Plugin { pub struct Plugin {
macro_: async_priority_channel::Sender<TaskOp, u8>, macro_: async_priority_channel::Sender<TaskOp, u8>,
@ -42,7 +42,7 @@ impl Plugin {
let id = task.id; let id = task.id;
self.prog.send(TaskProg::New(id, 0))?; self.prog.send(TaskProg::New(id, 0))?;
self.macro_.try_send(PluginOp::Entry(task).into(), NORMAL)?; self.macro_.try_send(PluginOp::Entry(task).into(), _HIGH)?;
self.succ(id) self.succ(id)
} }
} }

View file

@ -7,7 +7,7 @@ use yazi_config::{open::Opener, plugin::PluginRule, TASKS};
use yazi_shared::{emit, event::Exec, fs::{unique_path, Url}, Layer, Throttle}; use yazi_shared::{emit, event::Exec, fs::{unique_path, Url}, Layer, Throttle};
use super::{Running, TaskProg, TaskStage}; use super::{Running, TaskProg, TaskStage};
use crate::{file::{File, FileOpDelete, FileOpLink, FileOpPaste, FileOpTrash}, plugin::{Plugin, PluginOpEntry}, preload::{Preload, PreloadOpRule, PreloadOpSize}, process::{Process, ProcessOpOpen}, TaskKind, TaskOp, HIGH, NORMAL, VERY_HIGH, VERY_LOW}; use crate::{file::{File, FileOpDelete, FileOpLink, FileOpPaste, FileOpTrash}, plugin::{Plugin, PluginOpEntry}, preload::{Preload, PreloadOpRule, PreloadOpSize}, process::{Process, ProcessOpOpen}, TaskKind, TaskOp, _HIGH, _LOW, _NORMAL};
pub struct Scheduler { pub struct Scheduler {
pub file: Arc<File>, pub file: Arc<File>,
@ -117,13 +117,13 @@ impl Scheduler {
} }
if succ > 0 { if succ > 0 {
if let Some(fut) = running.try_remove(id, TaskStage::Pending) { if let Some(fut) = running.try_remove(id, TaskStage::Pending) {
micro.try_send(fut, HIGH).ok(); micro.try_send(fut, _NORMAL).ok();
} }
} }
} }
TaskProg::Succ(id) => { TaskProg::Succ(id) => {
if let Some(fut) = running.write().try_remove(id, TaskStage::Dispatched) { if let Some(fut) = running.write().try_remove(id, TaskStage::Dispatched) {
micro.try_send(fut, HIGH).ok(); micro.try_send(fut, _NORMAL).ok();
} }
} }
TaskProg::Fail(id, reason) => { TaskProg::Fail(id, reason) => {
@ -157,7 +157,7 @@ impl Scheduler {
let b = running.all.remove(&id).is_some(); let b = running.all.remove(&id).is_some();
if let Some(hook) = running.hooks.remove(&id) { if let Some(hook) = running.hooks.remove(&id) {
self.micro.try_send(hook(true), HIGH).ok(); self.micro.try_send(hook(true), _HIGH).ok();
} }
b b
} }
@ -203,7 +203,7 @@ impl Scheduler {
file.paste(FileOpPaste { id, from, to, cut: true, follow: false, retry: 0 }).await.ok(); file.paste(FileOpPaste { id, from, to, cut: true, follow: false, retry: 0 }).await.ok();
} }
.boxed(), .boxed(),
VERY_LOW, _LOW,
); );
} }
@ -220,7 +220,7 @@ impl Scheduler {
file.paste(FileOpPaste { id, from, to, cut: false, follow: true, retry: 0 }).await.ok(); file.paste(FileOpPaste { id, from, to, cut: false, follow: true, retry: 0 }).await.ok();
} }
.boxed(), .boxed(),
VERY_LOW, _LOW,
); );
} }
@ -240,7 +240,7 @@ impl Scheduler {
.ok(); .ok();
} }
.boxed(), .boxed(),
VERY_LOW, _LOW,
); );
} }
@ -269,7 +269,7 @@ impl Scheduler {
file.delete(FileOpDelete { id, target, length: 0 }).await.ok(); file.delete(FileOpDelete { id, target, length: 0 }).await.ok();
} }
.boxed(), .boxed(),
VERY_LOW, _LOW,
); );
} }
@ -283,7 +283,7 @@ impl Scheduler {
file.trash(FileOpTrash { id, target, length: 0 }).await.ok(); file.trash(FileOpTrash { id, target, length: 0 }).await.ok();
} }
.boxed(), .boxed(),
VERY_LOW, _LOW,
); );
} }
@ -296,7 +296,7 @@ impl Scheduler {
plugin.micro(PluginOpEntry { id, name }).await.ok(); plugin.micro(PluginOpEntry { id, name }).await.ok();
} }
.boxed(), .boxed(),
VERY_HIGH, _HIGH,
); );
} }
@ -322,7 +322,7 @@ impl Scheduler {
preload.rule(PreloadOpRule { id, rule_id, rule_multi, plugin: cmd, targets }).await.ok(); preload.rule(PreloadOpRule { id, rule_id, rule_multi, plugin: cmd, targets }).await.ok();
} }
.boxed(), .boxed(),
HIGH, _HIGH,
); );
} }
@ -340,7 +340,7 @@ impl Scheduler {
preload.size(PreloadOpSize { id, target, throttle }).await.ok(); preload.size(PreloadOpSize { id, target, throttle }).await.ok();
} }
.boxed(), .boxed(),
HIGH, _HIGH,
); );
} }
} }