Exemple #1
0
    def runService(self, timered):
        if self == threading.currentThread():
            # deve-se definir o refreshMinutes aqui, para que em caso de erro não fique com o último valor
            self.refreshMinutes = self.defaultRefreshMinutes
            if not self.logged:
                self.doLogin()

            now = time.time()
            if not timered or now - self.lastRefresh >= self.ieRefreshTime:
                if (self.refreshcount % 60) == 0: # a cada 60 iterações faz um full refresh
                    self.sync.loadAllMsgs()
                    self.refreshcount += 1
                else:
                    self.sync.loadUnseen()
                    if timered:
                        self.refreshcount += 1
                self.lastRefresh = time.time()
            # se a data foi alterada para trás reajusta o último refresh
            elif now < self.lastRefresh:
                self.lastRefresh = now - self.ieRefreshTime

            # checks for new mail and notify the user as needed. May redefine refreshMinutes.
            ImapCheckMailService.runService(self, timered)

            # verifica se o próximo refresh deve acontecer antes de passar 'refreshMinutes'
            nextrefresh = self.lastRefresh + self.ieRefreshTime
            if nextrefresh < time.time() + (self.refreshMinutes * 60):
                self.refreshMinutes = max(0, nextrefresh - time.time()) / 60
        else:
            if self.logged:
                self.close()
            self.doLogin()