mirror of
https://github.com/aljazceru/turso.git
synced 2025-12-18 17:14: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 {
|
||||
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 std::io::{Read, Seek, Write};
|
||||
use std::sync::Arc;
|
||||
@@ -44,11 +46,7 @@ impl IO for GenericIO {
|
||||
|
||||
impl Clock for GenericIO {
|
||||
fn now(&self) -> Instant {
|
||||
let now = chrono::Local::now();
|
||||
Instant {
|
||||
secs: now.timestamp(),
|
||||
micros: now.timestamp_subsec_micros(),
|
||||
}
|
||||
DefaultClock.now()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#![allow(clippy::arc_with_non_send_sync)]
|
||||
|
||||
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::{turso_assert, CompletionError, LimboError, Result};
|
||||
use parking_lot::Mutex;
|
||||
@@ -697,11 +697,7 @@ impl IO for UringIO {
|
||||
|
||||
impl Clock for UringIO {
|
||||
fn now(&self) -> Instant {
|
||||
let now = chrono::Local::now();
|
||||
Instant {
|
||||
secs: now.timestamp(),
|
||||
micros: now.timestamp_subsec_micros(),
|
||||
}
|
||||
DefaultClock.now()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use super::{Buffer, Clock, Completion, File, OpenFlags, IO};
|
||||
use crate::Result;
|
||||
use crate::{io::clock::DefaultClock, Result};
|
||||
|
||||
use crate::io::clock::Instant;
|
||||
use std::{
|
||||
@@ -35,11 +35,7 @@ impl Default for MemoryIO {
|
||||
|
||||
impl Clock for MemoryIO {
|
||||
fn now(&self) -> Instant {
|
||||
let now = chrono::Local::now();
|
||||
Instant {
|
||||
secs: now.timestamp(),
|
||||
micros: now.timestamp_subsec_micros(),
|
||||
}
|
||||
DefaultClock.now()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use super::{Completion, File, OpenFlags, IO};
|
||||
use crate::error::LimboError;
|
||||
use crate::io::clock::{Clock, Instant};
|
||||
use crate::io::clock::{Clock, DefaultClock, Instant};
|
||||
use crate::io::common;
|
||||
use crate::Result;
|
||||
use parking_lot::Mutex;
|
||||
@@ -27,11 +27,7 @@ impl UnixIO {
|
||||
|
||||
impl Clock for UnixIO {
|
||||
fn now(&self) -> Instant {
|
||||
let now = chrono::Local::now();
|
||||
Instant {
|
||||
secs: now.timestamp(),
|
||||
micros: now.timestamp_subsec_micros(),
|
||||
}
|
||||
DefaultClock.now()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use super::{Buffer, Completion, File, OpenFlags, IO};
|
||||
use crate::ext::VfsMod;
|
||||
use crate::io::clock::{Clock, Instant};
|
||||
use crate::io::clock::{Clock, DefaultClock, Instant};
|
||||
use crate::io::CompletionInner;
|
||||
use crate::{LimboError, Result};
|
||||
use std::ffi::{c_void, CString};
|
||||
@@ -10,11 +10,7 @@ use turso_ext::{BufferRef, IOCallback, SendPtr, VfsFileImpl, VfsImpl};
|
||||
|
||||
impl Clock for VfsMod {
|
||||
fn now(&self) -> Instant {
|
||||
let now = chrono::Local::now();
|
||||
Instant {
|
||||
secs: now.timestamp(),
|
||||
micros: now.timestamp_subsec_micros(),
|
||||
}
|
||||
DefaultClock.now()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 std::io::{Read, Seek, Write};
|
||||
use std::sync::Arc;
|
||||
@@ -44,11 +46,7 @@ impl IO for WindowsIO {
|
||||
|
||||
impl Clock for WindowsIO {
|
||||
fn now(&self) -> Instant {
|
||||
let now = chrono::Local::now();
|
||||
Instant {
|
||||
secs: now.timestamp(),
|
||||
micros: now.timestamp_subsec_micros(),
|
||||
}
|
||||
DefaultClock.now()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user