Exemple #1
0
    def __init__(self, conn, addr, server):
        RequestHandler.__init__(self, conn, addr, server)

        self.nick = None
        self.rtt = 0
        self.time_probe = 0
        self.waiting_ping_response = False

        self.par_degree = 0
        self.par_degree_changed = CHANGE_ACKNOWLEDGED

        self.eos_sent = False
Exemple #2
0
    def writable(self):
        """
        The method is called whenever it is possible to write something to the
        socket.
        """

        if self.nick is None:
            return RequestHandler.writable(self)

        nick = self.nick

        if self.par_degree_changed == CHANGE_REQUESTED:
            self.par_degree_changed = CHANGE_SENT

            data = json.dumps({
                'type': 'change-degree',
                'nick': self.nick,
                'data': self.par_degree,
            })

            self.push("HTTP/1.1 200 OK\r\n"                \
                      "Content-type: application/json\r\n" \
                      "Connection: keep-alive\r\n"         \
                      "Content-Length: %d\r\n\r\n%s" %     \
                      (len(data), data))

        with self.server.lock:
            if not self.waiting_ping_response and \
                nick in self.server.timestamps and \
                self.server.timestamps[nick][0] == PING_EXECUTE:
                self.time_probe = time.time()

                data = json.dumps({
                    'type': 'keep-alive',
                    'nick': self.nick,
                    'data': self.time_probe,
                })

                #self.server.info("Requesting RTT for %s" % self.nick)

                self.push("HTTP/1.1 200 OK\r\n"                \
                          "Content-type: application/json\r\n" \
                          "Connection: keep-alive\r\n"         \
                          "Content-Length: %d\r\n\r\n%s" %     \
                          (len(data), data))

                self.waiting_ping_response = True

        return RequestHandler.writable(self)
Exemple #3
0
    def handle_error(self):
        RequestHandler.handle_error(self)

        if self.nick is not None:
            self.server.on_group_died(self.nick, True)
Exemple #4
0
    def handle_close(self):
        RequestHandler.handle_close(self)

        if self.nick is not None:
            self.server.on_group_died(self.nick, False)