コード例 #1
0
ファイル: SyncManager.py プロジェクト: Jonas18175/ProjectPlan
class Sync(threading.Thread):
    def __init__(self, Logger=None):
        threading.Thread.__init__(self)

        self.SyncObjectsEnum = Enum()
        self.Projects = Enum()
        self.RunClasses = Enum()

        self.running = True
        self.logger = Logger

    def addProject(self, ProjectName):
        self.Projects[ProjectName] = None

    def getProjects(self):
        return self.Projects

    def addRunClass(self, Name, RunClass):
        self.RunClasses[Name] = RunClass

    def getRunClasses(self):
        return self.RunClasses

    def addSyncTask(self, ProjectName, Name, Sync):
        if ProjectName in self.Projects.keys():
            SyncObjectsEnum = Enum()
            SyncObjectsEnum[Name] = Sync
            self.Projects[ProjectName] = SyncObjectsEnum
        else:
            SyncObjectsEnum = Enum()
            SyncObjectsEnum[Name] = Sync
            self.Projects[""] = SyncObjectsEnum

    def removeSyncTask(self, ProjectName):
        return self.Projects.pop(ProjectName)

    def run(self):
        while self.running:
            time.sleep(1.5)
            try:
                for Project in self.Projects:
                    for SyncObject in self.Projects[Project].keys():
                        self.Projects[Project][SyncObject].run()
                        self.logger.info("Running Object " + SyncObject + "...")
            except RuntimeError:
                continue
        else:
            if self.logger:
                self.logger.info("Shutdown Mainthread ...")