simplify clock code by using a common struct

This commit is contained in:
pedrocarlo
2025-10-02 00:38:40 -03:00
parent 943ade7293
commit ff955aeee9
7 changed files with 28 additions and 36 deletions

View File

@@ -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(),
}
}
}

View File

@@ -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()
}
}

View File

@@ -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()
}
}

View File

@@ -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()
}
}

View File

@@ -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()
}
}

View File

@@ -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()
}
}

View File

@@ -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()
}
}