mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
refactor: promote Id to the task scheduler (#2873)
This commit is contained in:
parent
0eec8fc80e
commit
aae3f9ea4a
20 changed files with 179 additions and 107 deletions
146
Cargo.lock
generated
146
Cargo.lock
generated
|
|
@ -213,7 +213,7 @@ dependencies = [
|
||||||
"miniz_oxide",
|
"miniz_oxide",
|
||||||
"object",
|
"object",
|
||||||
"rustc-demangle",
|
"rustc-demangle",
|
||||||
"windows-targets",
|
"windows-targets 0.52.6",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -349,9 +349,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.2.26"
|
version = "1.2.27"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "956a5e21988b87f372569b66183b78babf23ebc2e744b733e4350a752c4dafac"
|
checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"jobserver",
|
"jobserver",
|
||||||
"libc",
|
"libc",
|
||||||
|
|
@ -735,7 +735,7 @@ dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"option-ext",
|
"option-ext",
|
||||||
"redox_users",
|
"redox_users",
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.60.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -1442,9 +1442,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.7.4"
|
version = "2.7.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "minimal-lexical"
|
name = "minimal-lexical"
|
||||||
|
|
@ -1810,7 +1810,7 @@ dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"redox_syscall",
|
"redox_syscall",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"windows-targets",
|
"windows-targets 0.52.6",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -1845,9 +1845,9 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "plist"
|
name = "plist"
|
||||||
version = "1.7.1"
|
version = "1.7.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "eac26e981c03a6e53e0aee43c113e3202f5581d5360dae7bd2c70e800dd0451d"
|
checksum = "3d77244ce2d584cd84f6a15f86195b8c9b2a0dfbfd817c09e0464244091a58ed"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64",
|
"base64",
|
||||||
"indexmap",
|
"indexmap",
|
||||||
|
|
@ -1964,9 +1964,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quick-xml"
|
name = "quick-xml"
|
||||||
version = "0.32.0"
|
version = "0.37.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2"
|
checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
|
@ -2133,9 +2133,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "redox_syscall"
|
name = "redox_syscall"
|
||||||
version = "0.5.12"
|
version = "0.5.13"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af"
|
checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.9.1",
|
"bitflags 2.9.1",
|
||||||
]
|
]
|
||||||
|
|
@ -2486,9 +2486,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.102"
|
version = "2.0.103"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f6397daf94fa90f058bd0fd88429dd9e5738999cca8d701813c80723add80462"
|
checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
|
@ -2594,12 +2594,11 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thread_local"
|
name = "thread_local"
|
||||||
version = "1.1.8"
|
version = "1.1.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
|
checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"once_cell",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -3129,7 +3128,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132"
|
checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-core 0.56.0",
|
"windows-core 0.56.0",
|
||||||
"windows-targets",
|
"windows-targets 0.52.6",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -3141,7 +3140,7 @@ dependencies = [
|
||||||
"windows-implement 0.56.0",
|
"windows-implement 0.56.0",
|
||||||
"windows-interface 0.56.0",
|
"windows-interface 0.56.0",
|
||||||
"windows-result 0.1.2",
|
"windows-result 0.1.2",
|
||||||
"windows-targets",
|
"windows-targets 0.52.6",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -3203,9 +3202,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows-link"
|
name = "windows-link"
|
||||||
version = "0.1.1"
|
version = "0.1.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
|
checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows-result"
|
name = "windows-result"
|
||||||
|
|
@ -3213,7 +3212,7 @@ version = "0.1.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8"
|
checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-targets",
|
"windows-targets 0.52.6",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -3240,7 +3239,7 @@ version = "0.52.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-targets",
|
"windows-targets 0.52.6",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -3249,7 +3248,16 @@ version = "0.59.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
|
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-targets",
|
"windows-targets 0.52.6",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-sys"
|
||||||
|
version = "0.60.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
|
||||||
|
dependencies = [
|
||||||
|
"windows-targets 0.53.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -3258,14 +3266,30 @@ version = "0.52.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
|
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows_aarch64_gnullvm",
|
"windows_aarch64_gnullvm 0.52.6",
|
||||||
"windows_aarch64_msvc",
|
"windows_aarch64_msvc 0.52.6",
|
||||||
"windows_i686_gnu",
|
"windows_i686_gnu 0.52.6",
|
||||||
"windows_i686_gnullvm",
|
"windows_i686_gnullvm 0.52.6",
|
||||||
"windows_i686_msvc",
|
"windows_i686_msvc 0.52.6",
|
||||||
"windows_x86_64_gnu",
|
"windows_x86_64_gnu 0.52.6",
|
||||||
"windows_x86_64_gnullvm",
|
"windows_x86_64_gnullvm 0.52.6",
|
||||||
"windows_x86_64_msvc",
|
"windows_x86_64_msvc 0.52.6",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-targets"
|
||||||
|
version = "0.53.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef"
|
||||||
|
dependencies = [
|
||||||
|
"windows_aarch64_gnullvm 0.53.0",
|
||||||
|
"windows_aarch64_msvc 0.53.0",
|
||||||
|
"windows_i686_gnu 0.53.0",
|
||||||
|
"windows_i686_gnullvm 0.53.0",
|
||||||
|
"windows_i686_msvc 0.53.0",
|
||||||
|
"windows_x86_64_gnu 0.53.0",
|
||||||
|
"windows_x86_64_gnullvm 0.53.0",
|
||||||
|
"windows_x86_64_msvc 0.53.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -3274,48 +3298,96 @@ version = "0.52.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
|
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_aarch64_gnullvm"
|
||||||
|
version = "0.53.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_aarch64_msvc"
|
name = "windows_aarch64_msvc"
|
||||||
version = "0.52.6"
|
version = "0.52.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
|
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_aarch64_msvc"
|
||||||
|
version = "0.53.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_i686_gnu"
|
name = "windows_i686_gnu"
|
||||||
version = "0.52.6"
|
version = "0.52.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
|
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_gnu"
|
||||||
|
version = "0.53.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_i686_gnullvm"
|
name = "windows_i686_gnullvm"
|
||||||
version = "0.52.6"
|
version = "0.52.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
|
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_gnullvm"
|
||||||
|
version = "0.53.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_i686_msvc"
|
name = "windows_i686_msvc"
|
||||||
version = "0.52.6"
|
version = "0.52.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
|
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_msvc"
|
||||||
|
version = "0.53.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_x86_64_gnu"
|
name = "windows_x86_64_gnu"
|
||||||
version = "0.52.6"
|
version = "0.52.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
|
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_gnu"
|
||||||
|
version = "0.53.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_x86_64_gnullvm"
|
name = "windows_x86_64_gnullvm"
|
||||||
version = "0.52.6"
|
version = "0.52.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
|
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_gnullvm"
|
||||||
|
version = "0.53.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_x86_64_msvc"
|
name = "windows_x86_64_msvc"
|
||||||
version = "0.52.6"
|
version = "0.52.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_msvc"
|
||||||
|
version = "0.53.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winnow"
|
name = "winnow"
|
||||||
version = "0.7.11"
|
version = "0.7.11"
|
||||||
|
|
@ -3583,7 +3655,7 @@ dependencies = [
|
||||||
"tokio",
|
"tokio",
|
||||||
"tracing",
|
"tracing",
|
||||||
"uzers",
|
"uzers",
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.60.2",
|
||||||
"yazi-ffi",
|
"yazi-ffi",
|
||||||
"yazi-macro",
|
"yazi-macro",
|
||||||
"yazi-shared",
|
"yazi-shared",
|
||||||
|
|
@ -3618,7 +3690,7 @@ dependencies = [
|
||||||
"twox-hash",
|
"twox-hash",
|
||||||
"unicode-width 0.2.0",
|
"unicode-width 0.2.0",
|
||||||
"uzers",
|
"uzers",
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.60.2",
|
||||||
"yazi-adapter",
|
"yazi-adapter",
|
||||||
"yazi-binding",
|
"yazi-binding",
|
||||||
"yazi-boot",
|
"yazi-boot",
|
||||||
|
|
@ -3690,7 +3762,7 @@ dependencies = [
|
||||||
"tokio",
|
"tokio",
|
||||||
"tracing",
|
"tracing",
|
||||||
"uzers",
|
"uzers",
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.60.2",
|
||||||
"yazi-macro",
|
"yazi-macro",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -3702,7 +3774,7 @@ dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"parking_lot",
|
"parking_lot",
|
||||||
"tracing",
|
"tracing",
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.60.2",
|
||||||
"yazi-macro",
|
"yazi-macro",
|
||||||
"yazi-shared",
|
"yazi-shared",
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -13,5 +13,5 @@ proc-macro = true
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# External dependencies
|
# External dependencies
|
||||||
syn = { version = "2.0.102", features = [ "full" ] }
|
syn = { version = "2.0.103", features = [ "full" ] }
|
||||||
quote = "1.0.40"
|
quote = "1.0.40"
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ impl App {
|
||||||
drain_events!();
|
drain_events!();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if rx.recv_many(&mut events, 50).await > 0 {
|
} else if rx.recv_many(&mut events, 50).await != 0 {
|
||||||
drain_events!();
|
drain_events!();
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ libc = { workspace = true }
|
||||||
uzers = { workspace = true }
|
uzers = { workspace = true }
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
windows-sys = { version = "0.59.0", features = [ "Win32_Storage_FileSystem" ] }
|
windows-sys = { version = "0.60.2", features = [ "Win32_Storage_FileSystem" ] }
|
||||||
|
|
||||||
[target.'cfg(target_os = "macos")'.dependencies]
|
[target.'cfg(target_os = "macos")'.dependencies]
|
||||||
core-foundation-sys = { workspace = true }
|
core-foundation-sys = { workspace = true }
|
||||||
|
|
|
||||||
|
|
@ -12,10 +12,7 @@ use yazi_shared::natsort;
|
||||||
use super::{Locked, Partition, Partitions};
|
use super::{Locked, Partition, Partitions};
|
||||||
|
|
||||||
impl Partitions {
|
impl Partitions {
|
||||||
pub fn monitor<F>(me: Locked, cb: F)
|
pub fn monitor(me: Locked, cb: fn()) {
|
||||||
where
|
|
||||||
F: Fn() + Copy + Send + 'static,
|
|
||||||
{
|
|
||||||
tokio::task::spawn_blocking(move || {
|
tokio::task::spawn_blocking(move || {
|
||||||
let session = unsafe { DASessionCreate(kCFAllocatorDefault) };
|
let session = unsafe { DASessionCreate(kCFAllocatorDefault) };
|
||||||
if session.is_null() {
|
if session.is_null() {
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ uzers = { workspace = true }
|
||||||
|
|
||||||
[target."cfg(windows)".dependencies]
|
[target."cfg(windows)".dependencies]
|
||||||
clipboard-win = "5.4.0"
|
clipboard-win = "5.4.0"
|
||||||
windows-sys = { version = "0.59.0", features = [ "Win32_System_JobObjects" ] }
|
windows-sys = { version = "0.60.2", features = [ "Win32_System_JobObjects" ] }
|
||||||
|
|
||||||
[target.'cfg(target_os = "macos")'.dependencies]
|
[target.'cfg(target_os = "macos")'.dependencies]
|
||||||
crossterm = { workspace = true, features = [ "use-dev-tty", "libc" ] }
|
crossterm = { workspace = true, features = [ "use-dev-tty", "libc" ] }
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ use tokio::{fs::{self, DirEntry}, io::{self, ErrorKind::{AlreadyExists, NotFound
|
||||||
use tracing::warn;
|
use tracing::warn;
|
||||||
use yazi_config::YAZI;
|
use yazi_config::YAZI;
|
||||||
use yazi_fs::{SizeCalculator, cha::Cha, copy_with_progress, maybe_exists, ok_or_not_found, path_relative_to, skip_path};
|
use yazi_fs::{SizeCalculator, cha::Cha, copy_with_progress, maybe_exists, ok_or_not_found, path_relative_to, skip_path};
|
||||||
use yazi_shared::url::Url;
|
use yazi_shared::{Id, url::Url};
|
||||||
|
|
||||||
use super::{FileIn, FileInDelete, FileInHardlink, FileInLink, FileInPaste, FileInTrash};
|
use super::{FileIn, FileInDelete, FileInHardlink, FileInLink, FileInPaste, FileInTrash};
|
||||||
use crate::{LOW, NORMAL, TaskOp, TaskProg};
|
use crate::{LOW, NORMAL, TaskOp, TaskProg};
|
||||||
|
|
@ -343,17 +343,15 @@ impl File {
|
||||||
|
|
||||||
impl File {
|
impl File {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn succ(&self, id: usize) -> Result<()> { Ok(self.prog.send(TaskProg::Succ(id))?) }
|
fn succ(&self, id: Id) -> Result<()> { Ok(self.prog.send(TaskProg::Succ(id))?) }
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn fail(&self, id: usize, reason: String) -> Result<()> {
|
fn fail(&self, id: Id, reason: String) -> Result<()> {
|
||||||
Ok(self.prog.send(TaskProg::Fail(id, reason))?)
|
Ok(self.prog.send(TaskProg::Fail(id, reason))?)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn log(&self, id: usize, line: String) -> Result<()> {
|
fn log(&self, id: Id, line: String) -> Result<()> { Ok(self.prog.send(TaskProg::Log(id, line))?) }
|
||||||
Ok(self.prog.send(TaskProg::Log(id, line))?)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
async fn queue(&self, r#in: impl Into<TaskOp>, priority: u8) -> Result<()> {
|
async fn queue(&self, r#in: impl Into<TaskOp>, priority: u8) -> Result<()> {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
use yazi_fs::cha::Cha;
|
use yazi_fs::cha::Cha;
|
||||||
use yazi_shared::url::Url;
|
use yazi_shared::{Id, url::Url};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum FileIn {
|
pub enum FileIn {
|
||||||
|
|
@ -11,7 +11,7 @@ pub enum FileIn {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FileIn {
|
impl FileIn {
|
||||||
pub fn id(&self) -> usize {
|
pub fn id(&self) -> Id {
|
||||||
match self {
|
match self {
|
||||||
Self::Paste(r#in) => r#in.id,
|
Self::Paste(r#in) => r#in.id,
|
||||||
Self::Link(r#in) => r#in.id,
|
Self::Link(r#in) => r#in.id,
|
||||||
|
|
@ -25,7 +25,7 @@ impl FileIn {
|
||||||
// --- Paste
|
// --- Paste
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct FileInPaste {
|
pub struct FileInPaste {
|
||||||
pub id: usize,
|
pub id: Id,
|
||||||
pub from: Url,
|
pub from: Url,
|
||||||
pub to: Url,
|
pub to: Url,
|
||||||
pub cha: Option<Cha>,
|
pub cha: Option<Cha>,
|
||||||
|
|
@ -51,7 +51,7 @@ impl FileInPaste {
|
||||||
// --- Link
|
// --- Link
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct FileInLink {
|
pub struct FileInLink {
|
||||||
pub id: usize,
|
pub id: Id,
|
||||||
pub from: Url,
|
pub from: Url,
|
||||||
pub to: Url,
|
pub to: Url,
|
||||||
pub cha: Option<Cha>,
|
pub cha: Option<Cha>,
|
||||||
|
|
@ -77,7 +77,7 @@ impl From<FileInPaste> for FileInLink {
|
||||||
// --- Hardlink
|
// --- Hardlink
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct FileInHardlink {
|
pub struct FileInHardlink {
|
||||||
pub id: usize,
|
pub id: Id,
|
||||||
pub from: Url,
|
pub from: Url,
|
||||||
pub to: Url,
|
pub to: Url,
|
||||||
pub cha: Option<Cha>,
|
pub cha: Option<Cha>,
|
||||||
|
|
@ -93,7 +93,7 @@ impl FileInHardlink {
|
||||||
// --- Delete
|
// --- Delete
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct FileInDelete {
|
pub struct FileInDelete {
|
||||||
pub id: usize,
|
pub id: Id,
|
||||||
pub target: Url,
|
pub target: Url,
|
||||||
pub length: u64,
|
pub length: u64,
|
||||||
}
|
}
|
||||||
|
|
@ -101,7 +101,7 @@ pub struct FileInDelete {
|
||||||
// --- Trash
|
// --- Trash
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct FileInTrash {
|
pub struct FileInTrash {
|
||||||
pub id: usize,
|
pub id: Id,
|
||||||
pub target: Url,
|
pub target: Url,
|
||||||
pub length: u64,
|
pub length: u64,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
use yazi_shared::Id;
|
||||||
|
|
||||||
use crate::{file::FileIn, plugin::PluginIn, prework::PreworkIn};
|
use crate::{file::FileIn, plugin::PluginIn, prework::PreworkIn};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
|
@ -8,7 +10,7 @@ pub enum TaskOp {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TaskOp {
|
impl TaskOp {
|
||||||
pub fn id(&self) -> usize {
|
pub fn id(&self) -> Id {
|
||||||
match self {
|
match self {
|
||||||
TaskOp::File(r#in) => r#in.id(),
|
TaskOp::File(r#in) => r#in.id(),
|
||||||
TaskOp::Plugin(r#in) => r#in.id(),
|
TaskOp::Plugin(r#in) => r#in.id(),
|
||||||
|
|
|
||||||
|
|
@ -2,33 +2,34 @@ use std::collections::HashMap;
|
||||||
|
|
||||||
use futures::future::BoxFuture;
|
use futures::future::BoxFuture;
|
||||||
use yazi_config::YAZI;
|
use yazi_config::YAZI;
|
||||||
|
use yazi_shared::{Id, Ids};
|
||||||
|
|
||||||
use super::{Task, TaskStage};
|
use super::{Task, TaskStage};
|
||||||
use crate::TaskKind;
|
use crate::TaskKind;
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct Ongoing {
|
pub struct Ongoing {
|
||||||
incr: usize,
|
pub(super) hooks: HashMap<Id, Box<dyn (FnOnce(bool) -> BoxFuture<'static, ()>) + Send + Sync>>,
|
||||||
|
pub(super) all: HashMap<Id, Task>,
|
||||||
pub(super) hooks: HashMap<usize, Box<dyn (FnOnce(bool) -> BoxFuture<'static, ()>) + Send + Sync>>,
|
|
||||||
pub(super) all: HashMap<usize, Task>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Ongoing {
|
impl Ongoing {
|
||||||
pub fn add(&mut self, kind: TaskKind, name: String) -> usize {
|
pub fn add(&mut self, kind: TaskKind, name: String) -> Id {
|
||||||
self.incr += 1;
|
static IDS: Ids = Ids::new();
|
||||||
self.all.insert(self.incr, Task::new(self.incr, kind, name));
|
|
||||||
self.incr
|
let id = IDS.next();
|
||||||
|
self.all.insert(id, Task::new(id, kind, name));
|
||||||
|
id
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn get(&self, id: usize) -> Option<&Task> { self.all.get(&id) }
|
pub fn get(&self, id: Id) -> Option<&Task> { self.all.get(&id) }
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn get_mut(&mut self, id: usize) -> Option<&mut Task> { self.all.get_mut(&id) }
|
pub fn get_mut(&mut self, id: Id) -> Option<&mut Task> { self.all.get_mut(&id) }
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn get_id(&self, idx: usize) -> Option<usize> { self.values().nth(idx).map(|t| t.id) }
|
pub fn get_id(&self, idx: usize) -> Option<Id> { self.values().nth(idx).map(|t| t.id) }
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn len(&self) -> usize {
|
pub fn len(&self) -> usize {
|
||||||
|
|
@ -40,7 +41,7 @@ impl Ongoing {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn exists(&self, id: usize) -> bool { self.all.contains_key(&id) }
|
pub fn exists(&self, id: Id) -> bool { self.all.contains_key(&id) }
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn values(&self) -> Box<dyn Iterator<Item = &Task> + '_> {
|
pub fn values(&self) -> Box<dyn Iterator<Item = &Task> + '_> {
|
||||||
|
|
@ -54,7 +55,7 @@ impl Ongoing {
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn is_empty(&self) -> bool { self.len() == 0 }
|
pub fn is_empty(&self) -> bool { self.len() == 0 }
|
||||||
|
|
||||||
pub fn try_remove(&mut self, id: usize, stage: TaskStage) -> Option<BoxFuture<'static, ()>> {
|
pub fn try_remove(&mut self, id: Id, stage: TaskStage) -> Option<BoxFuture<'static, ()>> {
|
||||||
if let Some(task) = self.get_mut(id) {
|
if let Some(task) = self.get_mut(id) {
|
||||||
if stage > task.stage {
|
if stage > task.stage {
|
||||||
task.stage = stage;
|
task.stage = stage;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
use yazi_proxy::options::PluginOpt;
|
use yazi_proxy::options::PluginOpt;
|
||||||
|
use yazi_shared::Id;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum PluginIn {
|
pub enum PluginIn {
|
||||||
|
|
@ -6,7 +7,7 @@ pub enum PluginIn {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PluginIn {
|
impl PluginIn {
|
||||||
pub fn id(&self) -> usize {
|
pub fn id(&self) -> Id {
|
||||||
match self {
|
match self {
|
||||||
Self::Entry(r#in) => r#in.id,
|
Self::Entry(r#in) => r#in.id,
|
||||||
}
|
}
|
||||||
|
|
@ -15,6 +16,6 @@ impl PluginIn {
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct PluginInEntry {
|
pub struct PluginInEntry {
|
||||||
pub id: usize,
|
pub id: Id,
|
||||||
pub opt: PluginOpt,
|
pub opt: PluginOpt,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
use anyhow::{Result, anyhow};
|
use anyhow::{Result, anyhow};
|
||||||
use tokio::sync::mpsc;
|
use tokio::sync::mpsc;
|
||||||
use yazi_plugin::isolate;
|
use yazi_plugin::isolate;
|
||||||
|
use yazi_shared::Id;
|
||||||
|
|
||||||
use super::{PluginIn, PluginInEntry};
|
use super::{PluginIn, PluginInEntry};
|
||||||
use crate::{HIGH, TaskOp, TaskProg};
|
use crate::{HIGH, TaskOp, TaskProg};
|
||||||
|
|
@ -50,10 +51,10 @@ impl Plugin {
|
||||||
|
|
||||||
impl Plugin {
|
impl Plugin {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn succ(&self, id: usize) -> Result<()> { Ok(self.prog.send(TaskProg::Succ(id))?) }
|
fn succ(&self, id: Id) -> Result<()> { Ok(self.prog.send(TaskProg::Succ(id))?) }
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn fail(&self, id: usize, reason: String) -> Result<()> {
|
fn fail(&self, id: Id, reason: String) -> Result<()> {
|
||||||
Ok(self.prog.send(TaskProg::Fail(id, reason))?)
|
Ok(self.prog.send(TaskProg::Fail(id, reason))?)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use yazi_config::plugin::{Fetcher, Preloader};
|
use yazi_config::plugin::{Fetcher, Preloader};
|
||||||
use yazi_shared::{Throttle, url::Url};
|
use yazi_shared::{Id, Throttle, url::Url};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum PreworkIn {
|
pub enum PreworkIn {
|
||||||
|
|
@ -11,7 +11,7 @@ pub enum PreworkIn {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PreworkIn {
|
impl PreworkIn {
|
||||||
pub fn id(&self) -> usize {
|
pub fn id(&self) -> Id {
|
||||||
match self {
|
match self {
|
||||||
Self::Fetch(r#in) => r#in.id,
|
Self::Fetch(r#in) => r#in.id,
|
||||||
Self::Load(r#in) => r#in.id,
|
Self::Load(r#in) => r#in.id,
|
||||||
|
|
@ -22,21 +22,21 @@ impl PreworkIn {
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct PreworkInFetch {
|
pub struct PreworkInFetch {
|
||||||
pub id: usize,
|
pub id: Id,
|
||||||
pub plugin: &'static Fetcher,
|
pub plugin: &'static Fetcher,
|
||||||
pub targets: Vec<yazi_fs::File>,
|
pub targets: Vec<yazi_fs::File>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct PreworkInLoad {
|
pub struct PreworkInLoad {
|
||||||
pub id: usize,
|
pub id: Id,
|
||||||
pub plugin: &'static Preloader,
|
pub plugin: &'static Preloader,
|
||||||
pub target: yazi_fs::File,
|
pub target: yazi_fs::File,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct PreworkInSize {
|
pub struct PreworkInSize {
|
||||||
pub id: usize,
|
pub id: Id,
|
||||||
pub target: Url,
|
pub target: Url,
|
||||||
pub throttle: Arc<Throttle<(Url, u64)>>,
|
pub throttle: Arc<Throttle<(Url, u64)>>,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ use tracing::error;
|
||||||
use yazi_config::Priority;
|
use yazi_config::Priority;
|
||||||
use yazi_fs::{FilesOp, SizeCalculator};
|
use yazi_fs::{FilesOp, SizeCalculator};
|
||||||
use yazi_plugin::isolate;
|
use yazi_plugin::isolate;
|
||||||
use yazi_shared::{event::CmdCow, url::Url};
|
use yazi_shared::{Id, event::CmdCow, url::Url};
|
||||||
|
|
||||||
use super::{PreworkIn, PreworkInFetch, PreworkInLoad, PreworkInSize};
|
use super::{PreworkIn, PreworkInFetch, PreworkInLoad, PreworkInSize};
|
||||||
use crate::{HIGH, NORMAL, TaskOp, TaskProg};
|
use crate::{HIGH, NORMAL, TaskOp, TaskProg};
|
||||||
|
|
@ -130,10 +130,10 @@ impl Prework {
|
||||||
|
|
||||||
impl Prework {
|
impl Prework {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn succ(&self, id: usize) -> Result<()> { Ok(self.prog.send(TaskProg::Succ(id))?) }
|
fn succ(&self, id: Id) -> Result<()> { Ok(self.prog.send(TaskProg::Succ(id))?) }
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn fail(&self, id: usize, reason: String) -> Result<()> {
|
fn fail(&self, id: Id, reason: String) -> Result<()> {
|
||||||
Ok(self.prog.send(TaskProg::Fail(id, reason))?)
|
Ok(self.prog.send(TaskProg::Fail(id, reason))?)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
|
|
||||||
use tokio::sync::mpsc;
|
use tokio::sync::mpsc;
|
||||||
use yazi_shared::url::Url;
|
use yazi_shared::{Id, url::Url};
|
||||||
|
|
||||||
use super::ShellOpt;
|
use super::ShellOpt;
|
||||||
|
|
||||||
// --- Block
|
// --- Block
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct ProcessInBlock {
|
pub struct ProcessInBlock {
|
||||||
pub id: usize,
|
pub id: Id,
|
||||||
pub cwd: Url,
|
pub cwd: Url,
|
||||||
pub cmd: OsString,
|
pub cmd: OsString,
|
||||||
pub args: Vec<OsString>,
|
pub args: Vec<OsString>,
|
||||||
|
|
@ -23,7 +23,7 @@ impl From<ProcessInBlock> for ShellOpt {
|
||||||
// --- Orphan
|
// --- Orphan
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct ProcessInOrphan {
|
pub struct ProcessInOrphan {
|
||||||
pub id: usize,
|
pub id: Id,
|
||||||
pub cwd: Url,
|
pub cwd: Url,
|
||||||
pub cmd: OsString,
|
pub cmd: OsString,
|
||||||
pub args: Vec<OsString>,
|
pub args: Vec<OsString>,
|
||||||
|
|
@ -38,7 +38,7 @@ impl From<ProcessInOrphan> for ShellOpt {
|
||||||
// --- Bg
|
// --- Bg
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct ProcessInBg {
|
pub struct ProcessInBg {
|
||||||
pub id: usize,
|
pub id: Id,
|
||||||
pub cwd: Url,
|
pub cwd: Url,
|
||||||
pub cmd: OsString,
|
pub cmd: OsString,
|
||||||
pub args: Vec<OsString>,
|
pub args: Vec<OsString>,
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ use anyhow::Result;
|
||||||
use scopeguard::defer;
|
use scopeguard::defer;
|
||||||
use tokio::{io::{AsyncBufReadExt, BufReader}, select, sync::mpsc};
|
use tokio::{io::{AsyncBufReadExt, BufReader}, select, sync::mpsc};
|
||||||
use yazi_proxy::{AppProxy, HIDER};
|
use yazi_proxy::{AppProxy, HIDER};
|
||||||
|
use yazi_shared::Id;
|
||||||
|
|
||||||
use super::{ProcessInBg, ProcessInBlock, ProcessInOrphan, ShellOpt};
|
use super::{ProcessInBg, ProcessInBlock, ProcessInOrphan, ShellOpt};
|
||||||
use crate::TaskProg;
|
use crate::TaskProg;
|
||||||
|
|
@ -97,15 +98,13 @@ impl Process {
|
||||||
|
|
||||||
impl Process {
|
impl Process {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn succ(&self, id: usize) -> Result<()> { Ok(self.prog.send(TaskProg::Succ(id))?) }
|
fn succ(&self, id: Id) -> Result<()> { Ok(self.prog.send(TaskProg::Succ(id))?) }
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn fail(&self, id: usize, reason: String) -> Result<()> {
|
fn fail(&self, id: Id, reason: String) -> Result<()> {
|
||||||
Ok(self.prog.send(TaskProg::Fail(id, reason))?)
|
Ok(self.prog.send(TaskProg::Fail(id, reason))?)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn log(&self, id: usize, line: String) -> Result<()> {
|
fn log(&self, id: Id, line: String) -> Result<()> { Ok(self.prog.send(TaskProg::Log(id, line))?) }
|
||||||
Ok(self.prog.send(TaskProg::Log(id, line))?)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ use yazi_config::{YAZI, plugin::{Fetcher, Preloader}};
|
||||||
use yazi_dds::Pump;
|
use yazi_dds::Pump;
|
||||||
use yazi_fs::{must_be_dir, remove_dir_clean, unique_name};
|
use yazi_fs::{must_be_dir, remove_dir_clean, unique_name};
|
||||||
use yazi_proxy::{MgrProxy, options::{PluginOpt, ProcessExecOpt}};
|
use yazi_proxy::{MgrProxy, options::{PluginOpt, ProcessExecOpt}};
|
||||||
use yazi_shared::{Throttle, url::Url};
|
use yazi_shared::{Id, Throttle, url::Url};
|
||||||
|
|
||||||
use super::{Ongoing, TaskProg, TaskStage};
|
use super::{Ongoing, TaskProg, TaskStage};
|
||||||
use crate::{HIGH, LOW, NORMAL, TaskKind, TaskOp, file::{File, FileInDelete, FileInHardlink, FileInLink, FileInPaste, FileInTrash}, plugin::{Plugin, PluginInEntry}, prework::{Prework, PreworkInFetch, PreworkInLoad, PreworkInSize}, process::{Process, ProcessInBg, ProcessInBlock, ProcessInOrphan}};
|
use crate::{HIGH, LOW, NORMAL, TaskKind, TaskOp, file::{File, FileInDelete, FileInHardlink, FileInLink, FileInPaste, FileInTrash}, plugin::{Plugin, PluginInEntry}, prework::{Prework, PreworkInFetch, PreworkInLoad, PreworkInSize}, process::{Process, ProcessInBg, ProcessInBlock, ProcessInOrphan}};
|
||||||
|
|
@ -55,7 +55,7 @@ impl Scheduler {
|
||||||
scheduler
|
scheduler
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn cancel(&self, id: usize) -> bool {
|
pub fn cancel(&self, id: Id) -> bool {
|
||||||
let mut ongoing = self.ongoing.lock();
|
let mut ongoing = self.ongoing.lock();
|
||||||
|
|
||||||
if let Some(hook) = ongoing.hooks.remove(&id) {
|
if let Some(hook) = ongoing.hooks.remove(&id) {
|
||||||
|
|
@ -413,7 +413,7 @@ impl Scheduler {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn send_micro<F>(&self, id: usize, priority: u8, f: F)
|
fn send_micro<F>(&self, id: Id, priority: u8, f: F)
|
||||||
where
|
where
|
||||||
F: Future<Output = Result<()>> + Send + 'static,
|
F: Future<Output = Result<()>> + Send + 'static,
|
||||||
{
|
{
|
||||||
|
|
@ -430,7 +430,7 @@ impl Scheduler {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn new_and_fail(&self, id: usize, reason: &str) -> Result<()> {
|
fn new_and_fail(&self, id: Id, reason: &str) -> Result<()> {
|
||||||
self.prog.send(TaskProg::New(id, 0))?;
|
self.prog.send(TaskProg::New(id, 0))?;
|
||||||
self.prog.send(TaskProg::Fail(id, reason.to_owned()))?;
|
self.prog.send(TaskProg::Fail(id, reason.to_owned()))?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
use tokio::sync::mpsc;
|
use tokio::sync::mpsc;
|
||||||
|
use yazi_shared::Id;
|
||||||
|
|
||||||
#[derive(Debug, Default)]
|
#[derive(Debug, Default)]
|
||||||
pub struct Task {
|
pub struct Task {
|
||||||
pub id: usize,
|
pub id: Id,
|
||||||
pub kind: TaskKind,
|
pub kind: TaskKind,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub stage: TaskStage,
|
pub stage: TaskStage,
|
||||||
|
|
@ -19,7 +20,7 @@ pub struct Task {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Task {
|
impl Task {
|
||||||
pub fn new(id: usize, kind: TaskKind, name: String) -> Self {
|
pub fn new(id: Id, kind: TaskKind, name: String) -> Self {
|
||||||
Self { id, kind, name, ..Default::default() }
|
Self { id, kind, name, ..Default::default() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -61,15 +62,15 @@ impl From<&Task> for TaskSummary {
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum TaskProg {
|
pub enum TaskProg {
|
||||||
// id, size
|
// id, size
|
||||||
New(usize, u64),
|
New(Id, u64),
|
||||||
// id, processed, size
|
// id, processed, size
|
||||||
Adv(usize, u32, u64),
|
Adv(Id, u32, u64),
|
||||||
// id
|
// id
|
||||||
Succ(usize),
|
Succ(Id),
|
||||||
// id
|
// id
|
||||||
Fail(usize, String),
|
Fail(Id, String),
|
||||||
// id, line
|
// id, line
|
||||||
Log(usize, String),
|
Log(Id, String),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Ord, PartialOrd)]
|
#[derive(Clone, Debug, Default, Eq, PartialEq, Ord, PartialOrd)]
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ yazi-macro = { path = "../yazi-macro", version = "25.6.11" }
|
||||||
anyhow = { workspace = true }
|
anyhow = { workspace = true }
|
||||||
crossterm = { workspace = true }
|
crossterm = { workspace = true }
|
||||||
futures = { workspace = true }
|
futures = { workspace = true }
|
||||||
memchr = "2.7.4"
|
memchr = "2.7.5"
|
||||||
parking_lot = { workspace = true }
|
parking_lot = { workspace = true }
|
||||||
percent-encoding = "2.3.1"
|
percent-encoding = "2.3.1"
|
||||||
ratatui = { workspace = true }
|
ratatui = { workspace = true }
|
||||||
|
|
@ -29,7 +29,7 @@ libc = { workspace = true }
|
||||||
uzers = { workspace = true }
|
uzers = { workspace = true }
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
windows-sys = { version = "0.59.0", features = [ "Win32_UI_Shell" ] }
|
windows-sys = { version = "0.60.2", features = [ "Win32_UI_Shell" ] }
|
||||||
|
|
||||||
[target.'cfg(target_os = "macos")'.dependencies]
|
[target.'cfg(target_os = "macos")'.dependencies]
|
||||||
crossterm = { workspace = true, features = [ "use-dev-tty", "libc" ] }
|
crossterm = { workspace = true, features = [ "use-dev-tty", "libc" ] }
|
||||||
|
|
|
||||||
|
|
@ -26,4 +26,4 @@ libc = { workspace = true }
|
||||||
crossterm = { workspace = true, features = [ "use-dev-tty", "libc" ] }
|
crossterm = { workspace = true, features = [ "use-dev-tty", "libc" ] }
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
windows-sys = { version = "0.59.0", features = [ "Win32_Globalization", "Win32_Storage_FileSystem", "Win32_System_IO", "Win32_System_Console", "Win32_System_Threading", "Win32_Security" ] }
|
windows-sys = { version = "0.60.2", features = [ "Win32_Globalization", "Win32_Storage_FileSystem", "Win32_System_IO", "Win32_System_Console", "Win32_System_Threading", "Win32_Security" ] }
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue