André, Você poderia me explicar como funciona o novo mecanismo de log? Quero comparar com algo que eu tinha pensado.
Você viu as alterações em packtes/packet.c que fiz a algumas semanas? Estava pensando em aproveitar a fila de pacotes, PacketQueue, para guardar os pacotes que serão logado. Tentando explicar melhor, no HLBR os pacotes podem ter 5 estado, IDLE, PENDING, SAVED, ALLOCATED, PROCESSING. Podemos aproveitar esses estados. Imagine criar uma thread que manterá uma relação de produtor/consumidor com a fila de pacotes salvos. Tipo, caso as funções de LOG em arquivos fossem chamadas, elas simplesmente salvam o pacotes, alterando seu estado para SAVED, e inserem o número do pacote numa estrutura do tipo fila (para que os logs sejam salvos na ordem correta) acessível pela thread de logging. Dessa forma, caso o pacote seja logado mas não derrubado, o mesmo poderá ser enviado pela interface adequada sem esperar a escrita em disco, operação essa a ser realizada pela thread de logging. Espero ter sido claro! ps: postei a idéia aqui para que possa ser avaliada, questionada e criticada por todos os membros da comunidade HLBR, portanto se tem alguma sugestão por favor não deixe de comentar! -- PEdroArthur_JEdi Nunca acredite num sistema que você não conhece o código fonte! Never trust a system you don't have sources for!
