Skip to content
Snippets Groups Projects
Commit 564190eb authored by Piotr Maślanka's avatar Piotr Maślanka
Browse files

changed in the database

parent d350725f
No related branches found
No related tags found
No related merge requests found
...@@ -28,7 +28,8 @@ cdef class Database: ...@@ -28,7 +28,8 @@ cdef class Database:
cpdef int delete_series(self, str name) except -1 cpdef int delete_series(self, str name) except -1
cpdef int delete_varlen_series(self, str name) except -1 cpdef int delete_varlen_series(self, str name) except -1
cpdef list get_open_series(self) cpdef list get_open_series(self)
cpdef list get_all_series(self) cpdef list get_all_normal_series(self)
cpdef list get_all_varlen_series(self)
cpdef int close_all_open_series(self) except -1 cpdef int close_all_open_series(self) except -1
cpdef unsigned long long get_first_entry_for(self, str name) cpdef unsigned long long get_first_entry_for(self, str name)
cpdef int sync(self) except -1 cpdef int sync(self) except -1
......
...@@ -39,11 +39,12 @@ cdef class Database: ...@@ -39,11 +39,12 @@ cdef class Database:
Return all open series Return all open series
:return: open series :return: open series
:rtype: tp.List[TimeSeries] :rtype: tp.List[tp.Union[VarlenSeries, TimeSeries]]
""" """
cdef: cdef:
list output = [] list output = []
TimeSeries series TimeSeries series
VarlenSeries v_series
str name str name
with self.lock: with self.lock:
with DictDeleter(self.open_series) as dd: with DictDeleter(self.open_series) as dd:
...@@ -52,6 +53,12 @@ cdef class Database: ...@@ -52,6 +53,12 @@ cdef class Database:
dd.delete() dd.delete()
else: else:
output.append(series) output.append(series)
with DictDeleter(self.open_varlen_series) as dd:
for v_series in dd.values():
if v_series.closed:
dd.delete()
else:
output.append(v_series)
return output return output
cpdef int delete_series(self, str name) except -1: cpdef int delete_series(self, str name) except -1:
...@@ -132,7 +139,9 @@ cdef class Database: ...@@ -132,7 +139,9 @@ cdef class Database:
cpdef int close_all_open_series(self) except -1: cpdef int close_all_open_series(self) except -1:
""" """
Closes all open series Closes all open series.
Note that this won't close variable length series that are in-use.
""" """
cdef: cdef:
TimeSeries series TimeSeries series
...@@ -141,9 +150,13 @@ cdef class Database: ...@@ -141,9 +150,13 @@ cdef class Database:
for series in self.open_series.values(): for series in self.open_series.values():
series.close() series.close()
self.open_series = {} self.open_series = {}
for v_series in self.open_varlen_series.values(): with DictDeleter(self.open_varlen_series) as dd:
v_series.close() for v_series in dd.values():
self.open_varlen_series = {} try:
v_series.close()
dd.delete()
except StillOpen:
pass
return 0 return 0
cpdef unsigned long long get_first_entry_for(self, str name): cpdef unsigned long long get_first_entry_for(self, str name):
...@@ -182,15 +195,24 @@ cdef class Database: ...@@ -182,15 +195,24 @@ cdef class Database:
if not series.closed: if not series.closed:
series.sync() series.sync()
cpdef list get_all_series(self): cpdef list get_all_normal_series(self):
""" """
Stream all series available within this database Stream all constant-length series available within this database
:return: a list of series names :return: a list of series names
:rtype: tp.List[str] :rtype: tp.List[str]
""" """
return os.listdir(self.path) return os.listdir(self.path)
cpdef list get_all_varlen_series(self):
"""
Stream all variable-length series available within this database
:return: a list of series names
:rtype: tp.List[str]
"""
return os.listdir(os.path.join(self.path, 'varlen'))
cpdef VarlenSeries create_varlen_series(self, str name, list length_profile, cpdef VarlenSeries create_varlen_series(self, str name, list length_profile,
int size_struct, int size_struct,
unsigned long entries_per_chunk, unsigned long entries_per_chunk,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment