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 = ""