예제 #1
0
    def chatrequest(self, event):
        """Chat event handler for incoming events
        :param event: ChatRequest with incoming chat message
        """

        self.log("Event: '%s'" % event.__dict__)
        try:
            action = event.action
            data = event.data
            username = self._getusername(event)

            if action == "say":
                chatpacket = {'component': 'chat',
                              'action': 'broadcast',
                              'data': {
                                  'sender': username,
                                  'timestamp': time(),
                                  'content': str(data.encode('utf-8'))
                              }
                              }
            else:
                self.log("Unsupported action: ", action, event, lvl=warn)
                return

            try:
                self.fireEvent(broadcast("users", chatpacket))
            except Exception as e:
                self.log("Transmission error before broadcast: %s" % e,
                         lvl=error)

        except Exception as e:
            self.log("Error: '%s' %s" % (e, type(e)), lvl=error)
예제 #2
0
    def navdatapush(self):
        """
        Pushes the current :referenceframe: out to clients.

        :return:
        """

        try:
            self.fireEvent(referenceframe({"data": self.referenceframe, "ages": self.referenceages}), "navdata")
            self.intervalcount += 1

            if self.intervalcount == self.passiveinterval:
                self.fireEvent(
                    broadcast(
                        "users",
                        {
                            "component": "navdata",
                            "action": "update",
                            "data": {"data": self.referenceframe, "ages": self.referenceages},
                        },
                    ),
                    "hfosweb",
                )
                self.intervalcount = 0
                # self.log("Reference frame successfully pushed.",
                # lvl=verbose)
        except Exception as e:
            self.log("Could not push referenceframe: ", e, type(e), lvl=critical)
예제 #3
0
파일: sensors.py 프로젝트: ri0t/hfos
    def navdatapush(self):
        """
        Pushes the current :referenceframe: out to clients.

        :return:
        """

        try:
            self.fireEvent(referenceframe({
                'data': self.referenceframe, 'ages': self.referenceages
            }), "navdata")
            self.intervalcount += 1

            if self.intervalcount == self.passiveinterval and len(
                    self.referenceframe) > 0:
                self.fireEvent(broadcast('users', {
                    'component': 'hfos.navdata.sensors',
                    'action': 'update',
                    'data': {
                        'data': self.referenceframe,
                        'ages': self.referenceages
                    }
                }), "hfosweb")
                self.intervalcount = 0
                # self.log("Reference frame successfully pushed.",
                # lvl=verbose)
        except Exception as e:
            self.log("Could not push referenceframe: ", e, type(e),
                     lvl=critical)
예제 #4
0
    def ping(self, *args):
        """Pings all connected clients with stupid ping/demo messages (for now)
        :param args:
        """

        self._count += 1
        self.log("Ping %i:" % self._count, args)

        data = {'component': 'ping',
                'action': "Hello"
                }
        if (self._count % 2) == 0:
            data = {'component': 'navdata',
                    'action': 'update',
                    'data': {'true_course': randint(0, 359),
                             'spd_over_grnd': randint(0, 50)
                             }
                    }
        self.fireEvent(broadcast("clients", json.dumps(data)))
예제 #5
0
    def alert(self, event):
        """AlertManager event handler for incoming events

        :param event with incoming AlertManager message
        """

        self.log("Event: '%s'" % event.__dict__)
        try:
            data = event.data

            # noinspection PySimplifyBooleanCheck,PySimplifyBooleanCheck
            if data is True:
                self.log("MOB ALERT ACTIVATED.", lvl=critical)

                self.mob_alert = True
                self._record_mob_alert()

                alert_packet = {
                    'component': 'hfos.alert.manager',
                    'action': 'alert',
                    'data': True
                }
            else:
                self.log("MOB deactivation requested by ",
                         event.user.account.name, lvl=warn)
                self.mob_alert = False

                alert_packet = {
                    'component': 'hfos.alert.manager',
                    'action': 'alert',
                    'data': False
                }

            try:
                self.fireEvent(broadcast("users", alert_packet))
            except Exception as e:
                self.log("Transmission error before broadcast: %s" % e,
                         lvl=error)

        except Exception as e:
            self.log("Error: '%s' %s" % (e, type(e)), lvl=error)