Manage running plugins
This commit is contained in:
@@ -35,7 +35,8 @@ class Core(Plugin):
|
|||||||
|
|
||||||
brk = True
|
brk = True
|
||||||
for running in still_running:
|
for running in still_running:
|
||||||
if running > 0:
|
if len(running) > 0:
|
||||||
|
log.info('Waiting on plugins to finish: %s' % running)
|
||||||
brk = False
|
brk = False
|
||||||
|
|
||||||
if brk: break
|
if brk: break
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ def addEvent(name, handler):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
parent = handler.im_self
|
parent = handler.im_self
|
||||||
parent.beforeCall()
|
parent.beforeCall(handler)
|
||||||
h = handler(*args, **kwargs)
|
h = handler(*args, **kwargs)
|
||||||
parent.afterCall()
|
parent.afterCall(handler)
|
||||||
except:
|
except:
|
||||||
h = handler(*args, **kwargs)
|
h = handler(*args, **kwargs)
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class Plugin(object):
|
|||||||
auto_register_static = True
|
auto_register_static = True
|
||||||
|
|
||||||
needs_shutdown = False
|
needs_shutdown = False
|
||||||
running = 0
|
running = []
|
||||||
|
|
||||||
def registerPlugin(self):
|
def registerPlugin(self):
|
||||||
addEvent('app.shutdown', self.doShutdown)
|
addEvent('app.shutdown', self.doShutdown)
|
||||||
@@ -67,11 +67,12 @@ class Plugin(object):
|
|||||||
except Exception, e:
|
except Exception, e:
|
||||||
log.error('Unable to create folder "%s": %s' % (path, e))
|
log.error('Unable to create folder "%s": %s' % (path, e))
|
||||||
|
|
||||||
def beforeCall(self):
|
def beforeCall(self, handler):
|
||||||
self.isRunning(True)
|
log.debug('Calling %s.%s' % (self.getName(), handler.__name__))
|
||||||
|
self.isRunning('%s.%s' % (self.getName(), handler.__name__))
|
||||||
|
|
||||||
def afterCall(self):
|
def afterCall(self, handler):
|
||||||
self.isRunning(False)
|
self.isRunning('%s.%s' % (self.getName(), handler.__name__), False)
|
||||||
|
|
||||||
def doShutdown(self):
|
def doShutdown(self):
|
||||||
self.shuttingDown(True)
|
self.shuttingDown(True)
|
||||||
@@ -82,12 +83,17 @@ class Plugin(object):
|
|||||||
|
|
||||||
self.needs_shutdown = value
|
self.needs_shutdown = value
|
||||||
|
|
||||||
def isRunning(self, value = None):
|
def isRunning(self, value = None, bool = True):
|
||||||
if value is None:
|
if value is None:
|
||||||
return self.running
|
return self.running
|
||||||
|
|
||||||
log.debug('Running %s: %s' % (value, self.getName()))
|
if bool:
|
||||||
self.running += 1 if value else -1
|
self.running.append(value)
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
self.running.remove(value)
|
||||||
|
except:
|
||||||
|
log.error("Something went wrong when finishing the plugin function. Could not find the 'is_running' key")
|
||||||
|
|
||||||
def isDisabled(self):
|
def isDisabled(self):
|
||||||
return not self.isEnabled()
|
return not self.isEnabled()
|
||||||
|
|||||||
Reference in New Issue
Block a user