def run(self): while True: read_sockets, write_sockets, exception_sockets = self.grab_workers_rwe( ) rlist, wlist, elist = yield Select(read_sockets, write_sockets, exception_sockets, self._select_timeout) self.handle_workers_rwe(rlist, wlist, elist)
def run(self): self.running = True while self.running and core.running: try: # First, execute pending commands while len(self._pending_commands) > 0: self._pending_commands.popleft()() # Now grab workers read_sockets = list(self._workers) + [self.pinger] write_sockets = [ worker for worker in self._workers if worker._ready_to_send ] exception_sockets = list(self._workers) if self.more_debugging: log.debug("Select In : " + _format_lists( read_sockets, write_sockets, exception_sockets)) rlist, wlist, elist = yield Select(read_sockets, write_sockets, exception_sockets, self._select_timeout) if self.more_debugging: log.debug("Select Out: " + _format_lists(rlist, wlist, elist)) if self.pinger in rlist: self.pinger.pongAll() rlist.remove(self.pinger) for worker in elist: worker._do_exception(self) if worker in rlist: rlist.remove(worker) if worker in wlist: wlist.remove(worker) for worker in rlist: worker._do_recv(self) for worker in wlist: worker._do_send(self) except GeneratorExit: # Must be shutting down break except BaseException as e: log.exception(e) break
def run(self): self.running = True while self.running: try: # First, execute pending commands while not self._pending_commands.empty(): self._pending_commands.get()() # Now grab workers read_sockets = list(self._workers) + [self.pinger] write_sockets = [ worker for worker in self._workers if worker._ready_to_send ] exception_sockets = list(self._workers) rlist, wlist, elist = yield Select(read_sockets, write_sockets, exception_sockets, self._select_timeout) if self.pinger in rlist: self.pinger.pongAll() rlist.remove(self.pinger) for worker in elist: worker.close() if worker in self._workers: self._workers.remove(worker) for worker in rlist: try: data = worker.socket.recv(self._BUF_SIZE) worker._push_receive_data(data) except socket.error as (s_errno, strerror): log.error("Socket error: " + strerror) worker.close() self._workers.discard(worker) for worker in wlist: try: l = worker.socket.send(worker.send_buf) if l > 0: worker._consume_send_buf(l) except socket.error as (s_errno, strerror): if s_errno != errno.EAGAIN: log.error("Socket error: " + strerror) worker.close() self._workers.discard(worker)
def run(self): while True: rr, ww, oo = yield Select(self.sock_to_iface.keys(), [], []) for r in rr: #data,addr = yield RecvFrom(sock, 65535) data, addr = r.recvfrom(65535) if addr[1] != RIP.RIP_PORT: continue #TODO: Check that source is on directly connected network addr = IPAddr(addr[0]) data = RIP.rip(raw=data) if data.version != 2: continue iface = self.sock_to_iface[r] #print "<<<",iface, addr, data if data.command == RIP.RIP_REQUEST: self.process_request(iface, addr, data) elif data.command == RIP.RIP_RESPONSE: self.process_response(iface, addr, data) self.sync_table()
def _task_proc (self): #log.info("%s task starting", type(self).__name__) while core.running and self.running: rr,ww,xx = yield Select(self._clients, [], [], self.IO_TIMEOUT) for client in rr: client._do_rx()