wasmer_journal/concrete/
arc.rs

1use super::*;
2use std::ops::Deref;
3use std::sync::Arc;
4
5impl<R: ReadableJournal> ReadableJournal for Arc<R> {
6    fn read(&self) -> anyhow::Result<Option<LogReadResult<'_>>> {
7        self.deref().read()
8    }
9
10    fn as_restarted(&self) -> anyhow::Result<Box<DynReadableJournal>> {
11        self.deref().as_restarted()
12    }
13}
14
15impl<W: WritableJournal> WritableJournal for Arc<W> {
16    fn write<'a>(&'a self, entry: JournalEntry<'a>) -> anyhow::Result<LogWriteResult> {
17        self.deref().write(entry)
18    }
19
20    fn flush(&self) -> anyhow::Result<()> {
21        self.deref().flush()
22    }
23
24    fn commit(&self) -> anyhow::Result<usize> {
25        self.deref().commit()
26    }
27
28    fn rollback(&self) -> anyhow::Result<usize> {
29        self.deref().rollback()
30    }
31}
32
33impl ReadableJournal for Arc<DynJournal> {
34    fn read(&self) -> anyhow::Result<Option<LogReadResult<'_>>> {
35        self.deref().read()
36    }
37
38    fn as_restarted(&self) -> anyhow::Result<Box<DynReadableJournal>> {
39        self.deref().as_restarted()
40    }
41}
42
43impl WritableJournal for Arc<DynJournal> {
44    fn write<'a>(&'a self, entry: JournalEntry<'a>) -> anyhow::Result<LogWriteResult> {
45        self.deref().write(entry)
46    }
47
48    fn flush(&self) -> anyhow::Result<()> {
49        self.deref().flush()
50    }
51
52    fn commit(&self) -> anyhow::Result<usize> {
53        self.deref().commit()
54    }
55
56    fn rollback(&self) -> anyhow::Result<usize> {
57        self.deref().rollback()
58    }
59}
60
61impl Journal for Arc<DynJournal> {
62    fn split(self) -> (Box<DynWritableJournal>, Box<DynReadableJournal>) {
63        (Box::new(self.clone()), Box::new(self.clone()))
64    }
65}