def load_all_rec(context, curdir, package): for f in os.listdir(curdir): fl = os.path.join(curdir,f) if (os.path.isdir(fl)): load_all_rec(context, fl, package + "." + f) elif (os.path.splitext(fl)[1] == ".py" and f != "__init__.py"): print_debug ("Loading plugin " + package+"."+os.path.splitext(f)[0]) module = importlib.import_module(package+"."+os.path.splitext(f)[0]) try: class_inst = module.main_class(context) context.modules.append(class_inst) try : assert((class_inst.get_role() != None and class_inst.get_class() == None) or (class_inst.get_role() == None and class_inst.get_class() != None)) if (class_inst.get_role() != None) : context.roles[class_inst.get_role()] = class_inst else : if (class_inst.get_class() in context.classes) : context.classes[class_inst.get_class()].append(class_inst) else : context.classes[class_inst.get_class] = [class_inst] except : print_error("Incorrent interface realization: " + str(sys.exc_info()[1])) except: print_warning("Cannot load " + package+"."+os.path.splitext(f)[0] + ", reason : " + str(sys.exc_info()[1]))
def run(self): while True: self.__turn_counter += 1 self.condition.acquire() if self.event == None: self.condition.wait() event = self.event self.event = None checked = False for event_entry in self.event_table: if isinstance(event, event_entry[0]): event_entry[1].call(event) checked = True break if not checked: print_warning("No suitable handler for" + str(event) + " in entry table") self.condition.release()