Skip to content

Commit 1b0c516

Browse files
committed
refactor: inline StorageBackend trait methods instead of delegating
Remove unnecessary proxy method calls in StorageBackend implementations. Directly call underlying storage operations (RocksDB/IndexedDB) instead of delegating to Storage::get/put/delete methods.
1 parent 7954fa5 commit 1b0c516

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

light-client-lib/src/storage/db/browser.rs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1460,15 +1460,34 @@ use super::super::LightClientStorage;
14601460
// Implementation of StorageBackend trait for IndexedDB
14611461
impl StorageBackend for Storage {
14621462
fn get(&self, key: Vec<u8>) -> crate::error::Result<Option<Vec<u8>>> {
1463-
Storage::get(self, key)
1463+
let values = self
1464+
.channel
1465+
.dispatch_database_command(CommandRequestWithTakeWhileAndFilterMap::Read {
1466+
keys: vec![key],
1467+
})
1468+
.map_err(|e| Error::Indexdb(format!("{:?}", e)))?;
1469+
match values {
1470+
DbCommandResponse::Read { values } => Ok(values.into_iter().last().unwrap()),
1471+
_ => unreachable!(),
1472+
}
14641473
}
14651474

14661475
fn put(&self, key: Vec<u8>, value: Vec<u8>) -> crate::error::Result<()> {
1467-
Storage::put(self, key, value)
1476+
self.channel
1477+
.dispatch_database_command(CommandRequestWithTakeWhileAndFilterMap::Put {
1478+
kvs: vec![KV { key, value }],
1479+
})
1480+
.map(|_| ())
1481+
.map_err(|e| Error::Indexdb(format!("{:?}", e)))
14681482
}
14691483

14701484
fn delete(&self, key: &[u8]) -> crate::error::Result<()> {
1471-
Storage::delete(self, key)
1485+
self.channel
1486+
.dispatch_database_command(CommandRequestWithTakeWhileAndFilterMap::Delete {
1487+
keys: vec![key.to_vec()],
1488+
})
1489+
.map(|_| ())
1490+
.map_err(|e| Error::Indexdb(format!("{:?}", e)))
14721491
}
14731492

14741493
fn batch(&self) -> Box<dyn BatchWriter> {

light-client-lib/src/storage/db/native.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,11 +1023,14 @@ impl StorageIterator for Storage {
10231023
// Implementation of StorageBackend trait for RocksDB
10241024
impl StorageBackend for Storage {
10251025
fn get(&self, key: Vec<u8>) -> Result<Option<Vec<u8>>> {
1026-
Storage::get(self, key.as_slice())
1026+
self.db
1027+
.get(key.as_slice())
1028+
.map(|v| v.map(|vi| vi.to_vec()))
1029+
.map_err(Into::into)
10271030
}
10281031

10291032
fn put(&self, key: Vec<u8>, value: Vec<u8>) -> Result<()> {
1030-
Storage::put(self, key, value)
1033+
self.db.put(key, value).map_err(Into::into)
10311034
}
10321035

10331036
fn delete(&self, key: &[u8]) -> Result<()> {

0 commit comments

Comments
 (0)