diff options
author | Lars Wirzenius <liw@liw.fi> | 2019-07-14 15:47:24 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2019-08-03 21:06:50 +0300 |
commit | 471b9d6209dc51890c7724b7b57b9121ba30af7d (patch) | |
tree | 2588958603fa067487bcecb9a51770b82a5804d2 /ick2/persistent.py | |
parent | 581f6cd53f57599326439dccb355e882e7858faa (diff) | |
download | ick2-471b9d6209dc51890c7724b7b57b9121ba30af7d.tar.gz |
Add: placeholder for MuckPersistentState
Diffstat (limited to 'ick2/persistent.py')
-rw-r--r-- | ick2/persistent.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/ick2/persistent.py b/ick2/persistent.py index bb0aeb6..31473ba 100644 --- a/ick2/persistent.py +++ b/ick2/persistent.py @@ -78,6 +78,35 @@ class MemoryPersistentState(PersistentStateInterface): del self._res[kind][rid] +class MuckPersistentState(PersistentStateInterface): + + def __init__(self): + self._res = {} + + def get_resource_ids(self, kind): + if kind not in self._res: + return [] + return list(self._res[kind].keys()) + + def has_resource(self, kind, rid): + return kind in self._res and rid in self._res[kind] + + def get_resource(self, kind, rid): + if kind not in self._res or rid not in self._res[kind]: + raise ick2.NotFound(kind=kind, rid=rid) + return self._res[kind][rid] + + def write_resource(self, kind, rid, resource): + if kind not in self._res: + self._res[kind] = {} + self._res[kind][rid] = resource + + def remove_resource(self, kind, rid): + if kind not in self._res or rid not in self._res[kind]: + raise ick2.NotFound(kind=kind, rid=rid) + del self._res[kind][rid] + + class NotFound(Exception): def __init__(self, kind, rid): |