platypush/platypush/bus/__init__.py

47 lines
1.0 KiB
Python
Raw Normal View History

import os
import sys
import signal
import logging
from enum import Enum
2017-12-18 01:10:51 +01:00
from queue import Queue
from platypush.message.event import Event, StopEvent
2017-12-18 01:10:51 +01:00
class Bus(object):
""" Main local bus where the daemon will listen for new messages """
def __init__(self, on_message=None):
2017-12-18 01:10:51 +01:00
self.bus = Queue()
self.on_message = on_message
2017-12-18 01:10:51 +01:00
def post(self, msg):
""" Sends a message to the bus """
self.bus.put(msg)
def get(self):
""" Reads one message from the bus """
return self.bus.get()
def poll(self):
"""
Reads messages from the bus until either stop event message or KeyboardInterrupt
"""
if not self.on_message:
logging.warning('No message handlers installed, cannot poll')
return
stop=False
while not stop:
msg = self.get()
self.on_message(msg)
if isinstance(msg, StopEvent) and msg.targets_me():
logging.info('Received STOP event')
stop=True
2017-12-18 01:10:51 +01:00
# vim:sw=4:ts=4:et: