Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions src/accml_lib/core/bl/delta_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ def __repr__(self):
def clear(self):
self.cache = dict()

def keys(self):
return self.cache.keys()

def get(self, id, default=None):
"""
Todo:
Expand Down Expand Up @@ -66,10 +69,9 @@ async def read(self, dev_id: str, prop_id: str) -> object:
if not flag:
return await self.backend.read(dev_id=dev_id, prop_id=prop_id)
r = await self.backend.read(dev_id=dev_id, prop_id=orig_prop_id)
rcmd = ReadCommand(id=dev_id, property=prop_id)
rcmd = ReadCommand(id=dev_id, property=orig_prop_id)
ref = self.cache.get(rcmd, None)
if ref is None:
rcmd = ReadCommand(id=dev_id, property=prop_id)
self.cache.set(rcmd, r)
# to get some zero of proper type
return self._calculate_delta_read(rcmd, r)
Expand All @@ -95,7 +97,7 @@ async def set(self, dev_id: str, prop_id: str, value: object):
if not flag:
return await self.backend.set(dev_id=dev_id, prop_id=prop_id, value=value)

rcmd = ReadCommand(id=dev_id, property=prop_id)
rcmd = ReadCommand(id=dev_id, property=orig_prop_id)
ref = self.cache.get(rcmd, None)
if not ref:
r = await self.backend.read(dev_id=dev_id, prop_id=orig_prop_id)
Expand All @@ -112,5 +114,5 @@ def _calculate_delta_set(self, rcmd: ReadCommand, value):
For overloading in derived classes e.g. for processing ophyd-async data
"""
ref = self.cache.get(rcmd, None)
assert ref is not None
assert ref is not None, f"No reference stored for {rcmd}"
return value + ref
Loading