Source code for core.clock

# core/clock.py
#
#

""" op de klok geschakeld. """

__copyright__ = "Copyright 2015, B.H.J Thate"

## IMPORTS

from core.utils.name import named
from core.dispatcher import Dispatcher
from core.kernel import fleet
from core.thing import Thing

import threading
import time

# TIMER

[docs]class Timer(Thing): def __init__(zelf, time_alarm, event, *args, **kwargs): Thing.__init__(zelf, *args, **kwargs) zelf.sleep = time_alarm - time.time() zelf.event = event
[docs] def start(zelf, *args, **kwargs): zelf._timer = threading.Timer(zelf.sleep, zelf.echo) zelf._timer.setDaemon(True) zelf._timer.setName(named(zelf.echo)) zelf._timer._start = time.time() zelf._timer._last = time.time() zelf._timer._status = "start" zelf._timer._status = "running" zelf._timer.sleep = zelf.sleep zelf._timer.start()
[docs] def echo(zelf, *args, **kwargs): for bot in fleet: bot.announce(zelf.event.parsed.rest)
[docs] def stop(zelf, *args, **kwargs): zelf._timer._status = "stopped" zelf._timer.cancel()
running = [] ## LOOPS
[docs]class Repeater(Thing): """ a Repeater calls a function every x seconds. """ def __init__(zelf, func, *args, **kwargs): """ args = function, sleeptime. """ Thing.__init__(zelf, **kwargs) zelf.kwargs = kwargs zelf.args = args zelf.func = func zelf.sleep = args[0] zelf._start = time.time() zelf._status = "start" zelf._running = named(zelf.func)
[docs] def start(zelf, *args, **kwargs): """ initialize a Looper. """ zelf._timer = threading.Timer(zelf.sleep, zelf.run) zelf._timer.setDaemon(True) zelf._timer.setName(named(zelf.func)) zelf._timer._nrs = Thing() zelf._timer._nrs.loops = 0 zelf._timer._start = time.time() zelf._timer._last = time.time() zelf._timer.sleep = zelf.sleep zelf._timer._status = "waiting" zelf._timer.start()
[docs] def run(zelf, *args, **kwargs): zelf.start() zelf._timer._status = "running" zelf._timer._nrs.loops += 1 zelf.func(*zelf.args, **zelf.kwargs)
[docs] def exit(zelf, *args, **kwargs): zelf._status = "" zelf._timer.cancel()