mirror of
https://github.com/PhotonVision/photonvision
synced 2026-07-02 02:51:40 +00:00
improved singleton
This commit is contained in:
@@ -5,7 +5,8 @@ from app.classes.Settings import SettingsManager
|
||||
from tornado.options import options
|
||||
|
||||
if __name__ == "__main__":
|
||||
mng = SettingsManager.get_instance()
|
||||
mng = SettingsManager()
|
||||
m = SettingsManager()
|
||||
tornado.options.parse_command_line()
|
||||
app = ChameleonApplication()
|
||||
print(f"Serving on port {options.port}")
|
||||
|
||||
@@ -1,30 +1,13 @@
|
||||
import os
|
||||
import json
|
||||
from Singleton import Singleton
|
||||
|
||||
|
||||
class SettingsManager:
|
||||
class SettingsManager(metaclass=Singleton):
|
||||
|
||||
cams = {}
|
||||
|
||||
__instance = None
|
||||
|
||||
@staticmethod
|
||||
def get_instance():
|
||||
|
||||
if not SettingsManager.__instance:
|
||||
SettingsManager()
|
||||
|
||||
return SettingsManager.__instance
|
||||
|
||||
def __init__(self):
|
||||
|
||||
if SettingsManager.__instance:
|
||||
raise Exception("This class is a singleton!")
|
||||
else:
|
||||
SettingsManager.__instance = self
|
||||
self._init_settings()
|
||||
|
||||
def _init_settings(self):
|
||||
self.settings_path = os.path.join(os.getcwd(), "settings")
|
||||
self.cams_path = os.path.join(self.settings_path, "cams")
|
||||
self._init_general_settings()
|
||||
|
||||
8
backend/app/classes/Singleton.py
Normal file
8
backend/app/classes/Singleton.py
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
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]
|
||||
Reference in New Issue
Block a user