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
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)
def handle_error(self): RequestHandler.handle_error(self) if self.nick is not None: self.server.on_group_died(self.nick, True)
def handle_close(self): RequestHandler.handle_close(self) if self.nick is not None: self.server.on_group_died(self.nick, False)