mirror of
https://github.com/lifegpc/pixiv_downloader.git
synced 2026-07-08 01:32:41 +08:00
Use qload/qstore
This commit is contained in:
@@ -4,6 +4,7 @@ use crate::downloader::pd_file::enums::PdFileStatus;
|
||||
use crate::downloader::pd_file::enums::PdFileType;
|
||||
use crate::downloader::pd_file::part_status::PdFilePartStatus;
|
||||
use crate::downloader::pd_file::version::PdFileVersion;
|
||||
use crate::ext::atomic::AtomicQuick;
|
||||
use crate::ext::io::StructRead;
|
||||
use crate::ext::replace::ReplaceWith2;
|
||||
use crate::ext::rw_lock::GetRwLock;
|
||||
@@ -30,7 +31,6 @@ use std::sync::RwLock;
|
||||
use std::sync::atomic::AtomicBool;
|
||||
use std::sync::atomic::AtomicU32;
|
||||
use std::sync::atomic::AtomicU64;
|
||||
use std::sync::atomic::Ordering;
|
||||
|
||||
lazy_static! {
|
||||
#[doc(hidden)]
|
||||
@@ -108,7 +108,7 @@ impl PdFile {
|
||||
#[inline]
|
||||
/// Returns the size of the downloaded data
|
||||
pub fn get_downloaded_file_size(&self) -> u64 {
|
||||
self.downloaded_file_size.load(Ordering::Relaxed)
|
||||
self.downloaded_file_size.qload()
|
||||
}
|
||||
|
||||
/// Return status data of a part
|
||||
@@ -137,7 +137,7 @@ impl PdFile {
|
||||
#[inline]
|
||||
/// Returns true if stored in memory only.
|
||||
fn is_mem_only(&self) -> bool {
|
||||
self.mem_only.load(Ordering::Relaxed)
|
||||
self.mem_only.qload()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
@@ -149,7 +149,7 @@ impl PdFile {
|
||||
#[inline]
|
||||
/// Returns true if needed to save to file.
|
||||
fn is_need_saved(&self) -> bool {
|
||||
self.need_saved.load(Ordering::Relaxed)
|
||||
self.need_saved.qload()
|
||||
}
|
||||
|
||||
/// Open a new [PdFile] if download is needed.
|
||||
@@ -237,8 +237,8 @@ impl PdFile {
|
||||
let f = File::create(p)?;
|
||||
self.file.get_mut().replace(f);
|
||||
self.file_path.get_mut().replace(PathBuf::from(p));
|
||||
self.mem_only.store(false, Ordering::Relaxed);
|
||||
self.need_saved.store(true, Ordering::Relaxed);
|
||||
self.mem_only.qstore(false);
|
||||
self.need_saved.qstore(true);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -280,7 +280,7 @@ impl PdFile {
|
||||
} else {
|
||||
self.file_name.get_mut().replace(String::from(fname));
|
||||
if !self.is_mem_only() {
|
||||
self.need_saved.store(true, Ordering::Relaxed);
|
||||
self.need_saved.qstore(true);
|
||||
// Rewrite all datas.
|
||||
self.write()?;
|
||||
}
|
||||
@@ -301,11 +301,11 @@ impl PdFile {
|
||||
f.write_all(&self.status.get_ref().int_value().to_le_bytes())?;
|
||||
let ftype = self.ftype.get_ref();
|
||||
f.write_all(&ftype.int_value().to_le_bytes())?;
|
||||
let file_size = self.file_size.load(Ordering::Relaxed);
|
||||
let file_size = self.file_size.qload();
|
||||
f.write_all(&file_size.to_le_bytes())?;
|
||||
f.write_all(&self.downloaded_file_size.load(Ordering::Relaxed).to_le_bytes())?;
|
||||
f.write_all(&self.downloaded_file_size.qload().to_le_bytes())?;
|
||||
let part_size = if ftype.is_multi() {
|
||||
self.part_size.load(Ordering::Relaxed)
|
||||
self.part_size.qload()
|
||||
} else {
|
||||
0
|
||||
};
|
||||
@@ -320,7 +320,7 @@ impl PdFile {
|
||||
}
|
||||
}
|
||||
}
|
||||
self.need_saved.store(false, Ordering::Relaxed);
|
||||
self.need_saved.qstore(false);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,9 +17,11 @@ pub trait AtomicQuick<T> {
|
||||
macro_rules! impl_atomic_quick_with_atomic {
|
||||
($type1:ty, $type2:ty) => {
|
||||
impl AtomicQuick<$type2> for $type1 {
|
||||
#[inline]
|
||||
fn qload(&self) -> $type2 {
|
||||
self.load(Ordering::Relaxed)
|
||||
}
|
||||
#[inline]
|
||||
fn qstore(&self, value: $type2) {
|
||||
self.store(value, Ordering::Relaxed)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use crate::downloader::pd_file::PdFile;
|
||||
use crate::ext::atomic::AtomicQuick;
|
||||
use crate::ext::rw_lock::GetRwLock;
|
||||
use crate::gettext;
|
||||
use crate::opthelper::get_helper;
|
||||
@@ -13,7 +14,6 @@ use std::sync::RwLock;
|
||||
use std::sync::RwLockReadGuard;
|
||||
use std::sync::RwLockWriteGuard;
|
||||
use std::sync::atomic::AtomicBool;
|
||||
use std::sync::atomic::Ordering;
|
||||
use std::time::Duration;
|
||||
|
||||
/// A client which use Pixiv's web API
|
||||
@@ -68,7 +68,7 @@ impl PixivWebClient {
|
||||
}
|
||||
|
||||
pub fn is_inited(&self) -> bool {
|
||||
self.inited.load(Ordering::Relaxed)
|
||||
self.inited.qload()
|
||||
}
|
||||
|
||||
pub fn init(&self) -> bool {
|
||||
@@ -88,7 +88,7 @@ impl PixivWebClient {
|
||||
self.client.set_header("Accept-Language", "ja");
|
||||
self.params.get_mut().replace(json::object! { "lang": "ja" });
|
||||
}
|
||||
self.inited.store(true, Ordering::Relaxed);
|
||||
self.inited.qstore(true);
|
||||
true
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ extern crate spin_on;
|
||||
|
||||
use crate::cookies::Cookie;
|
||||
use crate::cookies::CookieJar;
|
||||
use crate::ext::atomic::AtomicQuick;
|
||||
use crate::ext::json::ToJson;
|
||||
use crate::gettext;
|
||||
use crate::list::NonTailList;
|
||||
@@ -27,7 +28,6 @@ use std::sync::RwLockReadGuard;
|
||||
use std::sync::RwLockWriteGuard;
|
||||
use std::sync::atomic::AtomicBool;
|
||||
use std::sync::atomic::AtomicU64;
|
||||
use std::sync::atomic::Ordering;
|
||||
use std::time::Duration;
|
||||
|
||||
/// Convert data to HTTP headers map
|
||||
@@ -178,7 +178,7 @@ impl WebClient {
|
||||
|
||||
/// return retry times, 0 means disable
|
||||
pub fn get_retry(&self) -> u64 {
|
||||
self.retry.load(Ordering::Relaxed)
|
||||
self.retry.qload()
|
||||
}
|
||||
|
||||
pub async fn aget_retry_interval_as_mut<'a>(&'a self) -> RwLockWriteGuard<'a, Option<NonTailList<Duration>>> {
|
||||
@@ -212,7 +212,7 @@ impl WebClient {
|
||||
}
|
||||
|
||||
pub fn get_verbose(&self) -> bool {
|
||||
self.verbose.load(Ordering::Relaxed)
|
||||
self.verbose.qload()
|
||||
}
|
||||
|
||||
/// Used to handle Set-Cookie header in an [Response]
|
||||
@@ -276,11 +276,11 @@ impl WebClient {
|
||||
|
||||
/// Set retry times, 0 means disable
|
||||
pub fn set_retry(&self, retry: u64) {
|
||||
self.retry.store(retry, Ordering::Relaxed)
|
||||
self.retry.qstore(retry)
|
||||
}
|
||||
|
||||
pub fn set_verbose(&self, verbose: bool) {
|
||||
self.verbose.store(verbose, Ordering::Relaxed)
|
||||
self.verbose.qstore(verbose)
|
||||
}
|
||||
|
||||
/// Send GET requests with parameters
|
||||
|
||||
Reference in New Issue
Block a user