diff options
author | 2015-10-08 06:32:02 +0200 | |
---|---|---|
committer | 2015-10-08 06:32:02 +0200 | |
commit | 570f37674434c7f3816e3949967c31407610da6c (patch) | |
tree | 2175692750df20384073da4a6b26ef013f1d843b /module/plugins/internal/Addon.py | |
parent | New plugin: LogMarker (diff) | |
download | pyload-570f37674434c7f3816e3949967c31407610da6c.tar.xz |
Spare improvements
Diffstat (limited to 'module/plugins/internal/Addon.py')
-rw-r--r-- | module/plugins/internal/Addon.py | 49 |
1 files changed, 38 insertions, 11 deletions
diff --git a/module/plugins/internal/Addon.py b/module/plugins/internal/Addon.py index c6e7ea7b8..32344191a 100644 --- a/module/plugins/internal/Addon.py +++ b/module/plugins/internal/Addon.py @@ -23,7 +23,7 @@ def threaded(fn): class Addon(Plugin): __name__ = "Addon" __type__ = "hook" #@TODO: Change to `addon` in 0.4.10 - __version__ = "0.08" + __version__ = "0.10" __status__ = "testing" __threaded__ = [] #@TODO: Remove in 0.4.10 @@ -33,6 +33,9 @@ class Addon(Plugin): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] + PERIODICAL_INTERVAL = None + + def __init__(self, core, manager): self._init(core) @@ -50,7 +53,7 @@ class Addon(Plugin): #: Callback of periodical job task, used by HookManager self.cb = None - self.interval = 60 + self.interval = None self.init() self.init_events() @@ -83,27 +86,51 @@ class Addon(Plugin): self.event_list = None - def init_periodical(self, delay=0, threaded=False): - self.cb = self.pyload.scheduler.addJob(max(0, delay), self._periodical, [threaded], threaded=threaded) + def set_interval(self, value): + newinterval = max(0, self.PERIODICAL_INTERVAL, value) + if newinterval != value: + return False - #: Deprecated method, use `init_periodical` instead (Remove in 0.4.10) - def initPeriodical(self, *args, **kwargs): - return self.init_periodical(*args, **kwargs) + if newinterval != self.interval: + self.interval = newinterval + return True - def _periodical(self, threaded): - if self.interval < 0: + + def start_periodical(self, interval=None, threaded=False, delay=0): + if interval is not None and self.set_interval(interval) is False: + return False + else: + self.cb = self.pyload.scheduler.addJob(max(0, delay), self._periodical, [threaded], threaded=threaded) + return True + + + def restart_periodical(self, *args, **kwargs): + self.stop_periodical() + return self.start_periodical(*args, **kwargs) + + + def stop_periodical(self): + try: + return self.pyload.scheduler.removeJob(self.cb) + finally: self.cb = None - return + + #: Deprecated method, use `start_periodical` instead (Remove in 0.4.10) + def initPeriodical(self, *args, **kwargs): + return self.start_periodical(*args, **kwargs) + + + def _periodical(self, threaded): try: self.periodical() except Exception, e: self.log_error(_("Error executing periodical task: %s") % e, trace=True) - self.init_periodical(self.interval, threaded) + self.restart_periodical(self.interval, threaded) def periodical(self): |