def sendTokenOcupado(self, nodoId):
     #Si soy el generador, cambio temporalmente el timeout para este método
     if self.ipGenerador == True:
         self.socketNN.settimeout(5)
     recibido = False
     #Armo el paquete
     msgId = (1).to_bytes(1, "big")
     nodoIdBytes = nodoId.to_bytes(2, "big")
     ipAzul = ip_to_bytes(str_ip_to_tuple(self.mapa[str(nodoId)][0]))
     portAzul = (self.mapa[str(nodoId)][1]).to_bytes(2, byteorder="big")
     msgFinal = msgId + nodoIdBytes + ipAzul + portAzul
     #Mientras no reciba respuesta
     while not recibido:
         #Envío el token ocupado
         self.socketNN.sendto(msgFinal, self.nextOrangeAddress)
         try:
             #Intento recibir respuesta
             resp, address = self.socketNN.recvfrom(1024)
             nodoIdResp = int.from_bytes(resp[1:3], byteorder='big')
             if nodoId == nodoIdResp:
                 recibido = True
                 if self.NUM_AZULES != 0:
                     self.sendTokenVacio()
         except socket.timeout:
             #Si se vence el timeout, vuelvo a enviarlo
             pass
     #Si soy el generador, regreso el timeout al tiempo original
     if self.ipGenerador == True:
         self.socketNN.settimeout(10)
 def recibirTokenVacio(self):
     if (len(self.cola) != 0 and self.NUM_AZULES != 0):
         solicitud = self.cola.pop(0)
         nodoId = int(self.getNodoId())
         self.actualizarEstructuras(nodoId, solicitud[0], solicitud[1])
         print(self.mapa)
         nodoIdBytes = nodoId.to_bytes(2, "big")
         vecinos = self.listaVecinos(nodoId)
         self.NUM_AZULES -= 1
         self.listaAzules.append(solicitud)
         for n in vecinos:
             if self.mapa[n] == (0, 0):
                 msgId = (15).to_bytes(1, "big")
                 vecinoBytes = int(n).to_bytes(2, "big")
                 paqueteFinal = msgId + nodoIdBytes + vecinoBytes
                 self.secureUDPBlue.send(paqueteFinal, solicitud[0],
                                         solicitud[1])
             else:
                 msgId = (16).to_bytes(1, "big")
                 vecinoBytes = int(n).to_bytes(2, "big")
                 vecinoIP = ip_to_bytes(
                     str_ip_to_tuple(self.mapa[str(n)][0]))
                 vecinoPort = self.mapa[str(n)][1].to_bytes(2, "big")
                 paqueteFinal = msgId + nodoIdBytes + vecinoBytes + vecinoIP + vecinoPort
                 self.secureUDPBlue.send(paqueteFinal, solicitud[0],
                                         solicitud[1])
         return nodoId
     else:
         return -1
 def sendRequest(self):
     msgId = (14).to_bytes(1, byteorder="big")
     msgIP = ip_to_bytes(str_ip_to_tuple(self.localIP))
     msgPort = (self.localPort).to_bytes(2, byteorder="big")
     msgFinal = (msgId + msgIP + msgPort)
     print("Sending request...")
     self.secureUDP.send(msgFinal, self.serverIP, self.serverPort)
 def helloVecino(self, vecinoIP, vecinoPort):
     msgId = (1).to_bytes(1, byteorder="big")
     nodoId = (self.nodoId).to_bytes(2, byteorder="big")
     msgIP = ip_to_bytes(str_ip_to_tuple(self.localIP))
     msgPort = (self.localPort).to_bytes(2, byteorder="big")
     msgFinal = (msgId + nodoId + msgIP + msgPort)
     self.secureUDP.send(msgFinal, vecinoIP, vecinoPort)
 def enviarPaqIniciales(self, ipNaranja):
     miDireccion = ipNaranja.split(".")
     msg = (0).to_bytes(1, byteorder="big")
     IP = ip_to_bytes(str_ip_to_tuple(ipNaranja))
     self.socketNN.sendto(msg + IP, self.nextOrangeAddress)