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)