Fixed el makefile de IPC. Ahora crea la libreria necesaria para los wrappers.
(cherry picked from commit f820c5cd1cdc02d3287ff72eb7fca9119679fd03)
El socket de listen (accept) no debe ser finalizado con shutdown. Se agrego un mecanismo de intentos para tolerar, hasta cierto limite, el error por intentar usar una direccion que ya esta en uso. Arreglado un caso excepcional que podia llegar a un ciclo infinito.
(cherry picked from commit 3a57c47b135fce51db301573f9690cac20b5f0e7)
Agregado un sistema de Time To Live (TTL) para los mensajes LOOP. Los mensajes USER no tienen este sistema.
Ahora, las excepciones de C++ son transformadas a excepciones de Python.
Los sockets cuya comunicacion se rompa pueden lanzar una excepcion en caso de hacerles un shutdown.
Creado un mensaje LOOP para comunicar que el anillo esta abierto. Ahora, cuando el proceso inbound reconoce que es un lider, spawnea un proceso que se encargara de las tareas de lider. En caso de saber que deja de ser un lider, intentara eliminar el proceso lider.
Minimas refactorizaciones. Aun no hay garantias de que el sistema no se cuelgue.
Se maneja una excepcion
Logueo de las acciones a alto nivel de inbound y outbound.
Logs en la construccion de ring.
Mas logs, en este caso en el codigo encargado del forwardeo de los mensajes.
Arreglos menores a los loggueos.
Creada la version final del proceso leader.py. Ya se soporta la fusion con otros grupos y la eleccion (y reeleccion) del lider al inicio del anillo asi como tambien despues de una fusion.
Mejorado el vilog.py. Ahora soporta leer de la entrada estandar sin la necesidad de esperar un EOF. Esto permite ver un filelog como 'tail -f filelog | python vilog.py ...' sin que se bloquee.
Forzado el envio rapido de los mensajes al deshabilitar el algoritmo (nagle) interno de tcp usando la opcion TCP_NODELAY.
Ahora el vilog muestra el mensaje 'message repeated' de syslog.
Se eliminaron los timeout explicitos en passage. Se implemento un mecanismo de ACK por cada paquete enviado por outbound. Al momento de enviar un OPEN, cada cierto tiempo se reenvia un BrokenLink.
Agregados unos sleeps para evitar que se pisen dos sigint seguidas.
Eliminados unos sleeps innecesarios.
Mejores logs. Arreglado un fix que evitaba que el proceso de eleccion de lider se completara.