Índices por jornada, convenções, diagramas Mermaid, correções de arquitetura (MainShellFrame, TCP/PluginManager), tutoriais com verificações e troubleshooting; remove redirect pitiupi/docs. Co-authored-by: Cursor <cursoragent@cursor.com>
1.8 KiB
Mensagens
Message
A classe Message representa a estrutura base das mensagens trocadas pela aplicação.
Todas as mensagens utilizadas pelo sistema devem herdar dessa classe. Ela implementa
Serializable, permitindo que objetos de mensagem sejam convertidos em vetores de
bytes para transmissão pela rede.
A serialização é realizada pelo método toByteArray(), que transforma uma instância
da mensagem em uma representação binária enviada pelos mecanismos de comunicação.
As mensagens específicas devem estender essa classe, adicionando os atributos e comportamentos necessários para cada funcionalidade.
A camada de transporte não depende do conteúdo específico das mensagens. Tanto o
UDP quanto o TCP recebem mensagens serializadas como byte[].
Despacho aos plugins
- Registro: cada plugin declara
List<Class<? extends Message>> getMessages(). - Recepção UDP:
SocketUDPentrega bytes aoPluginManager, que usaPluginObjectInputStreamcom o classloader do JAR do plugin. - Recepção TCP:
TcpConnectionlê um frame completo e oPluginManagertenta o mesmo despacho. - Tipos desconhecidos: se nenhum plugin reconhece, a mensagem é ignorada (sem crash do núcleo).
Mensagens de infraestrutura (HeartbeatMessage, GoodbyeMessage, etc.) são tratadas no núcleo antes ou em paralelo ao despacho de plugins — ver 08_heartbeat_e_presenca.md.
Riscos da desserialização Java
Peers devem usar mesma versão das classes de mensagem. JARs de plugins devem vir de fonte confiável (instalação local pelo usuário). O núcleo não implementa sandbox de desserialização — ver 09_sistema_de_plugins.md.