mirror of
https://github.com/aljazceru/turso.git
synced 2025-12-19 01:24:20 +01:00
simplify clock code by using a common struct
This commit is contained in:
@@ -87,3 +87,15 @@ impl std::ops::Sub<Duration> for Instant {
|
|||||||
pub trait Clock {
|
pub trait Clock {
|
||||||
fn now(&self) -> Instant;
|
fn now(&self) -> Instant;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct DefaultClock;
|
||||||
|
|
||||||
|
impl Clock for DefaultClock {
|
||||||
|
fn now(&self) -> Instant {
|
||||||
|
let now = chrono::Local::now();
|
||||||
|
Instant {
|
||||||
|
secs: now.timestamp(),
|
||||||
|
micros: now.timestamp_subsec_micros(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
use crate::{Clock, Completion, File, Instant, LimboError, OpenFlags, Result, IO};
|
use crate::{
|
||||||
|
io::clock::DefaultClock, Clock, Completion, File, Instant, LimboError, OpenFlags, Result, IO,
|
||||||
|
};
|
||||||
use parking_lot::RwLock;
|
use parking_lot::RwLock;
|
||||||
use std::io::{Read, Seek, Write};
|
use std::io::{Read, Seek, Write};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
@@ -44,11 +46,7 @@ impl IO for GenericIO {
|
|||||||
|
|
||||||
impl Clock for GenericIO {
|
impl Clock for GenericIO {
|
||||||
fn now(&self) -> Instant {
|
fn now(&self) -> Instant {
|
||||||
let now = chrono::Local::now();
|
DefaultClock.now()
|
||||||
Instant {
|
|
||||||
secs: now.timestamp(),
|
|
||||||
micros: now.timestamp_subsec_micros(),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#![allow(clippy::arc_with_non_send_sync)]
|
#![allow(clippy::arc_with_non_send_sync)]
|
||||||
|
|
||||||
use super::{common, Completion, CompletionInner, File, OpenFlags, IO};
|
use super::{common, Completion, CompletionInner, File, OpenFlags, IO};
|
||||||
use crate::io::clock::{Clock, Instant};
|
use crate::io::clock::{Clock, DefaultClock, Instant};
|
||||||
use crate::storage::wal::CKPT_BATCH_PAGES;
|
use crate::storage::wal::CKPT_BATCH_PAGES;
|
||||||
use crate::{turso_assert, CompletionError, LimboError, Result};
|
use crate::{turso_assert, CompletionError, LimboError, Result};
|
||||||
use parking_lot::Mutex;
|
use parking_lot::Mutex;
|
||||||
@@ -697,11 +697,7 @@ impl IO for UringIO {
|
|||||||
|
|
||||||
impl Clock for UringIO {
|
impl Clock for UringIO {
|
||||||
fn now(&self) -> Instant {
|
fn now(&self) -> Instant {
|
||||||
let now = chrono::Local::now();
|
DefaultClock.now()
|
||||||
Instant {
|
|
||||||
secs: now.timestamp(),
|
|
||||||
micros: now.timestamp_subsec_micros(),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use super::{Buffer, Clock, Completion, File, OpenFlags, IO};
|
use super::{Buffer, Clock, Completion, File, OpenFlags, IO};
|
||||||
use crate::Result;
|
use crate::{io::clock::DefaultClock, Result};
|
||||||
|
|
||||||
use crate::io::clock::Instant;
|
use crate::io::clock::Instant;
|
||||||
use std::{
|
use std::{
|
||||||
@@ -35,11 +35,7 @@ impl Default for MemoryIO {
|
|||||||
|
|
||||||
impl Clock for MemoryIO {
|
impl Clock for MemoryIO {
|
||||||
fn now(&self) -> Instant {
|
fn now(&self) -> Instant {
|
||||||
let now = chrono::Local::now();
|
DefaultClock.now()
|
||||||
Instant {
|
|
||||||
secs: now.timestamp(),
|
|
||||||
micros: now.timestamp_subsec_micros(),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use super::{Completion, File, OpenFlags, IO};
|
use super::{Completion, File, OpenFlags, IO};
|
||||||
use crate::error::LimboError;
|
use crate::error::LimboError;
|
||||||
use crate::io::clock::{Clock, Instant};
|
use crate::io::clock::{Clock, DefaultClock, Instant};
|
||||||
use crate::io::common;
|
use crate::io::common;
|
||||||
use crate::Result;
|
use crate::Result;
|
||||||
use parking_lot::Mutex;
|
use parking_lot::Mutex;
|
||||||
@@ -27,11 +27,7 @@ impl UnixIO {
|
|||||||
|
|
||||||
impl Clock for UnixIO {
|
impl Clock for UnixIO {
|
||||||
fn now(&self) -> Instant {
|
fn now(&self) -> Instant {
|
||||||
let now = chrono::Local::now();
|
DefaultClock.now()
|
||||||
Instant {
|
|
||||||
secs: now.timestamp(),
|
|
||||||
micros: now.timestamp_subsec_micros(),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use super::{Buffer, Completion, File, OpenFlags, IO};
|
use super::{Buffer, Completion, File, OpenFlags, IO};
|
||||||
use crate::ext::VfsMod;
|
use crate::ext::VfsMod;
|
||||||
use crate::io::clock::{Clock, Instant};
|
use crate::io::clock::{Clock, DefaultClock, Instant};
|
||||||
use crate::io::CompletionInner;
|
use crate::io::CompletionInner;
|
||||||
use crate::{LimboError, Result};
|
use crate::{LimboError, Result};
|
||||||
use std::ffi::{c_void, CString};
|
use std::ffi::{c_void, CString};
|
||||||
@@ -10,11 +10,7 @@ use turso_ext::{BufferRef, IOCallback, SendPtr, VfsFileImpl, VfsImpl};
|
|||||||
|
|
||||||
impl Clock for VfsMod {
|
impl Clock for VfsMod {
|
||||||
fn now(&self) -> Instant {
|
fn now(&self) -> Instant {
|
||||||
let now = chrono::Local::now();
|
DefaultClock.now()
|
||||||
Instant {
|
|
||||||
secs: now.timestamp(),
|
|
||||||
micros: now.timestamp_subsec_micros(),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
use crate::{Clock, Completion, File, Instant, LimboError, OpenFlags, Result, IO};
|
use crate::{
|
||||||
|
io::clock::DefaultClock, Clock, Completion, File, Instant, LimboError, OpenFlags, Result, IO,
|
||||||
|
};
|
||||||
use parking_lot::RwLock;
|
use parking_lot::RwLock;
|
||||||
use std::io::{Read, Seek, Write};
|
use std::io::{Read, Seek, Write};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
@@ -44,11 +46,7 @@ impl IO for WindowsIO {
|
|||||||
|
|
||||||
impl Clock for WindowsIO {
|
impl Clock for WindowsIO {
|
||||||
fn now(&self) -> Instant {
|
fn now(&self) -> Instant {
|
||||||
let now = chrono::Local::now();
|
DefaultClock.now()
|
||||||
Instant {
|
|
||||||
secs: now.timestamp(),
|
|
||||||
micros: now.timestamp_subsec_micros(),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user