def start(self, addr, port): """ virtual method. """ self._socket = socket.socket() self._socket.bind((addr, port)) self._socket.listen(10) KBEngine.registerFileDescriptor(self._socket.fileno(), self.onRecv)
def onRecv(self, fileno): if self._socket.fileno() == fileno: sock, addr = self._socket.accept() self._clients[sock.fileno()] = (sock, addr) KBEngine.registerFileDescriptor(sock.fileno(), self.onRecv) DEBUG_MSG("Poller::onRecv: new channel[%s/%i]" % (addr, sock.fileno())) else: sock, addr = self._clients.get(fileno, None) if sock is None: return data = sock.recv(2048) DEBUG_MSG("Poller::onRecv: %s/%i get data, size=%i" % (addr, sock.fileno(), len(data))) KBEngine.deregisterFileDescriptor(sock.fileno()) del self._clients[fileno]
def onRecv(self, fileno): if self._socket.fileno() == fileno: sock, addr = self._socket.accept() self._clients[sock.fileno()] = (sock, addr) KBEngine.registerFileDescriptor(sock.fileno(), self.onRecv) DEBUG_MSG("Poller::onRecv: new channel[%s/%i]" % (addr, sock.fileno())) else: sock, addr = self._clients.get(fileno, None) if sock is None: return data = sock.recv(2048) DEBUG_MSG("Poller::onRecv: %s/%i get data, size=%i" % (addr, sock.fileno(), len(data))) self.processData(sock, data) KBEngine.deregisterFileDescriptor(sock.fileno()) sock.close() del self._clients[fileno]