[file handler] make singleton class

This commit is contained in:
Jan Grewe 2020-12-27 12:28:16 +01:00
parent 3041dc60f8
commit 6d5d31b83c

View File

@ -2,9 +2,17 @@ import os
import nixio as nix
from nixio import file
class FileHandler():
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
class FileHandler(metaclass=Singleton):
def __init__(self) -> None:
print("Handler Init")
super().__init__()
self._nix_file = None
self._file_requests = []
@ -15,7 +23,6 @@ class FileHandler():
Args:
filename ([type]): [description]
"""
print("open file: %s" % filename)
self.close()
if not os.path.exists(filename):
@ -24,12 +31,17 @@ class FileHandler():
self._nix_file = nix.File.open(filename, nix.FileMode.ReadOnly)
return True, "Successfully opened file %s." % filename.split(os.sep)[-1]
except RuntimeError as e:
return False, "Failed to open file %s! \n Error message is: %s" % (filename, e)
return False, "Failed to open file %s! \n Error message is: %s" % (filename, e)
except OSError as e:
return False, "Failed to open file %s! \n Error message is: %s\n Probably no nix file?!" % (filename, e)
def close(self):
print("close file")
# TODO check if there are any open file requests!
# TODO check if there are any pending file requests!
if self._nix_file is not None and self._nix_file.is_open():
self._nix_file.close()
self._nix_file = None
self._file_requests = []
self._file_requests = []
@property
def is_valid(self):
return self._nix_file is not None and self._nix_file.is_open()