@staticmethod
def timeEventCallback(tm_event, expiration):
    "The callback function for all TimeEvents.\n        Posts the event to the event's target Ahsm.\n        If the TimeEvent is periodic, re-insort the event\n        in the list of active time events.\n        "
    assert (expiration in Framework._time_events.keys()), ('Exp:%d _time_events.keys():%s' % (expiration, Framework._time_events.keys()))
    del Framework._time_events[expiration]
    Framework._tm_event_handle = None
    tm_event.act.postFIFO(tm_event)
    if (tm_event.interval > 0):
        Framework._insortTimeEvent(tm_event, (expiration + tm_event.interval))
    if ((Framework._tm_event_handle == None) and (len(Framework._time_events) > 0)):
        next_expiration = min(Framework._time_events.keys())
        next_event = Framework._time_events[next_expiration]
        Framework._tm_event_handle = Framework._event_loop.call_at(next_expiration, Framework.timeEventCallback, next_event, next_expiration)
    Framework._event_loop.call_soon_threadsafe(Framework.run)
The callback function for all TimeEvents.
Posts the event to the event's target Ahsm.
If the TimeEvent is periodic, re-insort the event
in the list of active time events.
@staticmethod
def timeEventCallback(tm_event, expiration):
    "The callback function for all TimeEvents.\n        Posts the event to the event's target Ahsm.\n        If the TimeEvent is periodic, re-insort the event\n        in the list of active time events.\n        "
    assert (expiration in Framework._time_events.keys()), ('Exp:%d _time_events.keys():%s' % (expiration, Framework._time_events.keys()))
    del Framework._time_events[expiration]
    Framework._tm_event_handle = None
    tm_event.act.postFIFO(tm_event)
    if (tm_event.interval > 0):
        Framework._insortTimeEvent(tm_event, (expiration + tm_event.interval))
    if ((Framework._tm_event_handle == None) and (len(Framework._time_events) > 0)):
        next_expiration = min(Framework._time_events.keys())
        next_event = Framework._time_events[next_expiration]
        Framework._tm_event_handle = Framework._event_loop.call_at(next_expiration, Framework.timeEventCallback, next_event, next_expiration)
    Framework._event_loop.call_soon_threadsafe(Framework.run)