[file handler] make singleton class
This commit is contained in:
parent
3041dc60f8
commit
6d5d31b83c
@ -2,9 +2,17 @@ import os
|
|||||||
import nixio as nix
|
import nixio as nix
|
||||||
from nixio import file
|
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:
|
def __init__(self) -> None:
|
||||||
|
print("Handler Init")
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self._nix_file = None
|
self._nix_file = None
|
||||||
self._file_requests = []
|
self._file_requests = []
|
||||||
@ -15,7 +23,6 @@ class FileHandler():
|
|||||||
Args:
|
Args:
|
||||||
filename ([type]): [description]
|
filename ([type]): [description]
|
||||||
"""
|
"""
|
||||||
print("open file: %s" % filename)
|
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
if not os.path.exists(filename):
|
if not os.path.exists(filename):
|
||||||
@ -25,11 +32,16 @@ class FileHandler():
|
|||||||
return True, "Successfully opened file %s." % filename.split(os.sep)[-1]
|
return True, "Successfully opened file %s." % filename.split(os.sep)[-1]
|
||||||
except RuntimeError as e:
|
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):
|
def close(self):
|
||||||
print("close file")
|
# TODO check if there are any pending file requests!
|
||||||
# TODO check if there are any open file requests!
|
|
||||||
if self._nix_file is not None and self._nix_file.is_open():
|
if self._nix_file is not None and self._nix_file.is_open():
|
||||||
self._nix_file.close()
|
self._nix_file.close()
|
||||||
self._nix_file = None
|
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()
|
Loading…
Reference in New Issue
Block a user