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