Example #1
0
class EventProcessor(Component):
    _singleton = None

    def __new__(cls, *args, **kwargs):
        if not cls._singleton:
            cls._singleton = super(EventProcessor, cls).__new__(cls)
        return cls._singleton

    def __init__(self):
        super(EventProcessor, self).__init__()
        self.message_handler = MessageHandler()
        self.gps = GPS()
        Message.init()
        Detector.start_plugins()
        Reactor.add_plugin_events()

    def react_internal(self, event):
        alert = Alert(event)
        Reactor.react(alert)

    def compute_distance(self, location):
        current_location = self.gps.get_current_coordinates()
        return GPS.distance_between(current_location, location)

    def react_external(self, event):
        distance = self.compute_distance(event.location)
        alert = Alert(event, distance)
        Reactor.react(alert)

    @handler("msg_received")
    def msg_received(self, *args):
        self.react_external(args[0])

    @handler("detection_received")
    def detection_received(self, *args):
        event = args[0]
        if event.own_warning:
            self.react_internal(event)
        self.message_handler.emit_event(event)

    @classmethod
    def handle_detection(cls, event):
        cls._singleton.fire(detection_received(event))

    @classmethod
    def handle_message(cls, event):
        cls._singleton.fire(msg_received(event))
Example #2
0
class EventProcessor(Component):
    _singleton = None

    def __new__(cls, *args, **kwargs):
        if not cls._singleton:
            cls._singleton = super(EventProcessor, cls).__new__(cls)
        return cls._singleton

    def __init__(self):
        super(EventProcessor, self).__init__()
        self.message_handler = MessageHandler()
        self.gps = GPS()
        Message.init()
        Detector.start_plugins()
        Reactor.add_plugin_events()

    def react_internal(self, event):
        alert = Alert(event)
        Reactor.react(alert)

    def compute_distance(self, location):
        current_location = self.gps.get_current_coordinates()
        return GPS.distance_between(current_location, location)

    def react_external(self, event):
        distance = self.compute_distance(event.location)
        alert = Alert(event, distance)
        Reactor.react(alert)

    @handler("msg_received")
    def msg_received(self, *args):
        self.react_external(args[0])

    @handler("detection_received")
    def detection_received(self, *args):
        event = args[0]
        if event.own_warning:
            self.react_internal(event)
        self.message_handler.emit_event(event)

    @classmethod
    def handle_detection(cls, event):
        cls._singleton.fire(detection_received(event))

    @classmethod
    def handle_message(cls, event):
        cls._singleton.fire(msg_received(event))