Update get_scheduled_event_status()

Use the more modern bus.wait_for_response()
pull/2256/head
Åke Forslund 2019-08-29 13:08:40 +02:00
parent c1d07bbe23
commit 87d9512093
1 changed files with 10 additions and 22 deletions

View File

@ -389,30 +389,18 @@ class EventSchedulerInterface:
event_name = self._create_unique_name(name)
data = {'name': event_name}
# making event_status an object so it's refrence can be changed
event_status = None
finished_callback = False
reply_name = 'mycroft.event_status.callback.{}'.format(event_name)
msg = Message('mycroft.scheduler.get_event', data=data)
status = self.skill.bus.wait_for_response(msg, reply_type=reply_name)
def callback(message):
nonlocal event_status
nonlocal finished_callback
if message.data is not None:
event_time = int(message.data[0][0])
current_time = int(time.time())
time_left_in_seconds = event_time - current_time
event_status = time_left_in_seconds
finished_callback = True
emitter_name = 'mycroft.event_status.callback.{}'.format(event_name)
self.skill.bus.once(emitter_name, callback)
self.skill.bus.emit(Message('mycroft.scheduler.get_event', data=data))
start_wait = time.time()
while finished_callback is False and time.time() - start_wait < 3.0:
time.sleep(0.1)
if time.time() - start_wait > 3.0:
if status:
event_time = int(status.data[0][0])
current_time = int(time.time())
time_left_in_seconds = event_time - current_time
LOG.info(time_left_in_seconds)
return time_left_in_seconds
else:
raise Exception("Event Status Messagebus Timeout")
return event_status
def cancel_all_repeating_events(self):
"""Cancel any repeating events started by the skill."""