Source code for core.looper
# core/looper.py
#
#
""" time related functionality. """
__copyright__ = "Copyright 2014 B.H.J Thate"
## IMPORTS
from core import Object
import threading
import time
# TIMER
[docs]class Timer(Object):
def __init__(zelf, time_alarm, event, *args, **kwargs):
Object.__init__(zelf, *args, **kwargs)
zelf._state.boot = time.time()
zelf._state.sleep = time_alarm - time.time()
zelf.timer = threading.Timer(zelf._state.sleep, zelf.echo)
zelf.event = event
zelf.timer.start()
[docs] def echo(zelf, *args, **kwargs): zelf.event.announce(zelf.event.get_rest())
## LOOPS
[docs]class Looper(Object):
""" a Looper calls a function every x seconds. """
def __init__(zelf, *args, **kwargs):
""" args = function, sleeptime. """
zelf._run.func = args[0]
zelf._state.boot = time.time()
zelf._status.sleep = args[1]
zelf._status.status = "starting"
[docs] def boot(zelf, *args, **kwargs):
""" initialize a Looper. """
zelf._state.input = time.time()
zelf._status.status = "exec"
zelf._status.cmnd = get_funcname(zelf._run.func)
try: zelf._run.func() ; zelf._state.output = time.time() ; zelf._status.status = "running"
except: error()
zelf._run.timer = threading.Timer(zelf._status.sleep, zelf.boot)
zelf._run.timer.start()
[docs] def get_name(zelf, *args, **kwargs): return "Looper/%s" % zelf._status.cmnd