Files
pitiupi/docs/documentation/14_arquitetura_e_manutencao.md
T
Gabriel Felipe Souza SantosandCursor eeb1936f6d Entrega v1 aula: shell com abas, PITIUPI_HOME e plugins de referência.
Consolida núcleo (presença, peer actions, MessageDispatcher), chat e screencast na galeria, documentação PT-BR e testes JUnit; remove mpChat do catálogo em favor do chat unificado.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-27 11:08:21 -03:00

44 lines
1.9 KiB
Markdown

# Arquitetura e manutenção
## Onde editar
| Comportamento | Pacote / classe |
| --- | --- |
| Login, porta, nome | `pitiupi.presentation.shell.LoginDialog` |
| Shell principal (abas, galeria) | `pitiupi.presentation.shell.MainShellFrame`, `TabWorkspacePanel` |
| Menu Ajuda | `pitiupi.presentation.shell.ShellMenuBar` |
| Usuários online, peer actions | `pitiupi.presentation.shell.NetworkUsersPanel`, `PeerActionBroker` |
| Facade rede para plugins | `pitiupi.control.ConnectionManager` |
| Workspace na aba (SPI) | `pitiupi.api.plugin.PluginWorkspace`, `ShellPluginWorkspace` |
| Menus legados (adapter) | `pitiupi.control.GuiManager` — deprecado; preferir peer actions |
| UDP | `pitiupi.net.udp.SocketUDP` |
| TCP servidor e mapa de conexões | `pitiupi.net.tcp.SocketTCP`, `TcpConnectionManager` |
| Conexão TCP por peer | `pitiupi.net.tcp.TcpConnection` |
| Handshake / fábrica TCP | `pitiupi.net.tcp.ConnectionFactory`, `HandshakeMessage` |
| Heartbeat | `pitiupi.control.HeartbeatManager`, `HeartbeatMessage` |
| Carregar JARs, despacho | `pitiupi.control.plugins.PluginManager` |
| Contrato plugin | `pitiupi.models.Plugin`, `pitiupi.models.Messages.Message` |
| Menus por categoria | `pitiupi.models.Menus.*` |
## Dependências entre módulos
```
pitiupi (núcleo)
↑ classpath
plugins/chat | plugins/screencast
```
Plugins **não** devem ser dependência do núcleo.
## Alterações arriscadas
- Mudar grupo multicast ou formato de heartbeat → quebra interoperabilidade na sala.
- Mudar framing TCP → todos os plugins que usam TCP precisam acompanhar.
- Alterar nome do arquivo SPI (`pitiupi.models.Plugin`) → todos os JARs de plugin.
Registrar decisão em [decision-register.md](../decision-register.md).
## Documentação viva
Ao mudar protocolo ou API pública do núcleo, atualizar o número correspondente em [documentation/README.md](README.md) e, se aplicável, [11_plugins_referencia.md](11_plugins_referencia.md).