Example #1
0
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]))
Example #2
0
    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()