sightplace-rep/core/registration/registry.py

54 lines
1.8 KiB
Python
Raw Permalink Normal View History

from typing import Set, List, Any
from core.registration.types import types
from core.registration.record import RecordHeader
class Registry:
__registry_store = {}
def __init__(self):
self.__registry_store = self.__RegistryStore()
def register(self, type, referral_name, parameters=None, policy=""):
if parameters is None:
parameters = {}
if types.exist(type):
self.__registry_store.add(type, referral_name)
print("["+type+"] - " + referral_name + " registered.")
return True
else:
print("["+type+"] - " + referral_name + " couldn't registered. Missing the type.")
return False
def unregister(self, type, referral_name):
self.__registry_store.remove(type,referral_name)
def exist(self, type, referral_name):
return self.__registry_store.exist(type, referral_name)
class __RegistryStore:
__store = {}
def __init__(self):
print("Registry Store")
def add(self, type, referral_name):
if type not in self.__store:
self.__store[type] = {}
if referral_name not in self.__store[type]:
self.__store[type][referral_name] = {}
self.__store[type][referral_name]["policy"] = ""
self.__store[type][referral_name]["parameters"] = ""
else:
print("This '"+referral_name+"' referral in this '"+type+"' type is already exist!")
def exist(self, type, referral_name):
if type not in self.__store or referral_name not in self.__store[type]:
return False
return True
def remove(self, type, referral_name):
self.__store[type].pop(referral_name)
if len(self.__store[type]) == 0:
self.__store.pop(type)