Skip to content

Commit 11cbbb3

Browse files
committed
Stopped using mtime.
1 parent 2c1d18d commit 11cbbb3

File tree

1 file changed

+51
-9
lines changed

1 file changed

+51
-9
lines changed

src/idpyoidc/storage/listfile.py

Lines changed: 51 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
logger = logging.getLogger(__name__)
88

99

10-
class ReadOnlyListFile(object):
10+
class ReadOnlyListFileMtime(object):
1111

1212
def __init__(self, file_name):
1313
self.file_name = file_name
@@ -16,24 +16,25 @@ def __init__(self, file_name):
1616
if not os.path.exists(file_name):
1717
fp = open(file_name, "x")
1818
fp.close()
19-
self.lst = []
19+
_lst = []
2020
else:
21-
self.lst = self._read_info(self.file_name)
21+
_lst = self._read_info(self.file_name)
22+
2223
def __getitem__(self, item):
2324
if self.is_changed(self.file_name):
24-
self.lst = self._read_info(self.file_name)
25-
if self.lst:
26-
return self.lst[item]
25+
_lst = self._read_info(self.file_name)
26+
if _lst:
27+
return _lst[item]
2728
else:
2829
return None
2930

3031
def __len__(self):
3132
if self.is_changed(self.file_name):
32-
self.lst = self._read_info(self.file_name)
33-
if self.lst is None or self.lst == []:
33+
_lst = self._read_info(self.file_name)
34+
if _lst is None or _lst == []:
3435
return 0
3536

36-
return len(self.lst)
37+
return len(_lst)
3738

3839
@staticmethod
3940
def get_mtime(fname):
@@ -92,3 +93,44 @@ def _read_info(self, fname):
9293
_msg = f"No such file: '{fname}'"
9394
logger.error(_msg)
9495
return None
96+
97+
98+
class ReadOnlyListFile(object):
99+
100+
def __init__(self, file_name):
101+
self.file_name = file_name
102+
103+
if not os.path.exists(file_name):
104+
fp = open(file_name, "x")
105+
fp.close()
106+
107+
def __getitem__(self, item):
108+
_lst = self._read_info(self.file_name)
109+
if _lst:
110+
return _lst[item]
111+
else:
112+
return None
113+
114+
def __len__(self):
115+
_lst = self._read_info(self.file_name)
116+
if _lst is None or _lst == []:
117+
return 0
118+
119+
return len(_lst)
120+
121+
def _read_info(self, fname):
122+
if os.path.isfile(fname):
123+
try:
124+
lock = FileLock(f"{fname}.lock")
125+
with lock:
126+
fp = open(fname, "r")
127+
info = [x.strip() for x in fp.readlines()]
128+
lock.release()
129+
return info or None
130+
except Exception as err:
131+
logger.error(err)
132+
raise
133+
else:
134+
_msg = f"No such file: '{fname}'"
135+
logger.error(_msg)
136+
return None

0 commit comments

Comments
 (0)