Source code for zot.looper
# zot/looper.py
#
#
""" time related functionality. """
__copyright__ = "Copyright 2015, B.H.J Thate"
## IMPORTS
from zot.utils import error, get_named
from zot.object import Object
from zot.runtime import kernel, fleet
import threading
import logging
import time
# TIMER
[docs]class TIMER(Object):
def __init__(zelf, time_alarm, event, *args, **kwargs):
Object.__init__(zelf, *args, **kwargs)
zelf.sleep = time_alarm - time.time()
zelf._start = time.time()
zelf._status = "start"
zelf._last = time.time()
zelf._running = "timer"
zelf._event = event
[docs] def start(zelf, *args, **kwargs):
zelf._status = "running"
if zelf.sleep > 0: time.sleep(zelf.sleep)
zelf.echo()
[docs] def echo(zelf, *args, **kwargs):
for bot in fleet: bot.announce(zelf._event.rest())
## LOOPS
[docs]class LOOPER(Object):
""" a LOOPER calls a function every x seconds. """
def __init__(zelf, func, sleeptime, *args, **kwargs):
""" args = function, sleeptime. """
Object.__init__(zelf, *args, **kwargs)
zelf.func = func
zelf._start = time.time()
zelf._last = time.time()
zelf._status = "start"
zelf._running = get_named(zelf.func)
zelf.sleep = sleeptime
[docs] def start(zelf, *args, **kwargs):
""" initialize a LOOPER. """
zelf._status = "running"
while zelf._status:
zelf._last = time.time()
try: zelf.func()
except: error()
if zelf.sleep > 0: time.sleep(zelf.sleep)
[docs] def exit(zelf, *args, **kwargs): zelf._status = ""