def __init__(self, address, port): self.retransmission_queue = RetransmissionQueue(self) self.retransmission_attempts = dict() self.outgoing_buffer = DataBuffer() self.state = CLOSED self.control_block = ClientControlBlock(address, port) self.socket = Soquete(address, port) self.packet_builder = PacketBuilder(self)
def handle_timeout(self): global count_rets count_rets += 1 if (debug or True): print("Parece que se perdió un paquete, voy a reenviar.") new_queue = RetransmissionQueue(self) for packet in self.retransmission_queue: if packet not in self.retransmission_attempts: self.retransmission_attempts[packet.get_seq_number()] = 0 self.retransmission_attempts[packet.get_seq_number()] += 1 if self.retransmission_attempts[ packet.get_seq_number()] >= MAX_RETRANSMISSION_ATTEMPTS: self.shutdown() self.error = "Intentos de retransmisión superó el máximo" break else: self.send_packet(packet) new_queue.put(packet) self.retransmission_queue = new_queue