summaryrefslogtreecommitdiffstats
path: root/module/plugins/internal/Addon.py
diff options
context:
space:
mode:
authorGravatar Walter Purcaro <vuolter@users.noreply.github.com> 2015-10-08 06:32:02 +0200
committerGravatar Walter Purcaro <vuolter@users.noreply.github.com> 2015-10-08 06:32:02 +0200
commit570f37674434c7f3816e3949967c31407610da6c (patch)
tree2175692750df20384073da4a6b26ef013f1d843b /module/plugins/internal/Addon.py
parentNew plugin: LogMarker (diff)
downloadpyload-570f37674434c7f3816e3949967c31407610da6c.tar.xz
Spare improvements
Diffstat (limited to 'module/plugins/internal/Addon.py')
-rw-r--r--module/plugins/internal/Addon.py49
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):