Files
pitiupi/docs/documentation/11_plugins_referencia.md
T
Gabriel Felipe Souza SantosandCursor aa75cebaaa docs: separar material de TP em docs/tp/
documentation/ fica neutra (produto); visão TP, tutorial Ping e
checklists de entrega movem para docs/tp/ sem link reverso.

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

59 lines
2.4 KiB
Markdown

# Plugins de referência
Dois módulos buildáveis no catálogo; o chat unifica o antigo mpChat (multicast, unicast, TCP e canal TCP privado).
## Comparativo
| | plugins/chat | plugins/screencast |
| --- | --- | --- |
| Build | Ant | Ant |
| id | `chat` | `screencast` |
| Classe | `ChatPlugin` | `ScreenCastPlugin` |
| Mensagem | `ChatMessage`, `LegacyMpChatMessage` | `ScreenCastMessage` |
| UI | `ChatPanel` (destino + transporte) | `ScreenCastPanel` (destino + transporte) |
| TCP privado | Toggle no `ChatPanel` + hooks `receiveBytes` (histórico `private:<IP>`) | — |
## plugins/chat
Fluxo resumido:
1. `ChatPlugin.createPlugin` registra `ChatPanel` e peer actions (sala, peer, TCP privado).
2. Envio: usuário escolhe destino e `TransportMode` → `MessageDispatcher` → UDP ou TCP do núcleo.
3. Recepção: `ChatMessage` em `receiveMessage` → histórico na aba correta (sala, IP ou canal privado).
4. TCP privado: toggle desliga o combo de transporte e usa bytes dedicados ao plugin.
Código de entrada: `plugins/chat/src/pitiupi/chat/plugin/ChatPlugin.java`.
```mermaid
flowchart LR
UI[ChatPanel] --> Disp[MessageDispatcher]
Disp --> CM[ConnectionManager]
CM --> Net[UDP ou TCP]
Net --> CM2[ConnectionManager peer]
CM2 --> CP[ChatPlugin.receiveMessage]
CP --> UI2[ChatPanel peer]
```
## plugins/screencast
Fluxo resumido:
1. Captura de tela em loop (com throttling) → `ScreenCastMessage` com imagem serializada.
2. Destino geral: multicast; um peer: unicast/TCP conforme painel.
3. `SessionNoticeMessage` (núcleo) marca início/fim de sessão para fechar abas de recepção.
Código de entrada: `plugins/screencast/src/pitiupi/screenCast/plugin/ScreenCastPlugin.java`.
**Limitação:** largura de banda e MTU — frames grandes podem sofrer perda em UDP; adequado para demonstração, não para produção.
## Limitações (não são bugs)
Os plugins de referência são **exemplos de demonstração**, não produtos completos:
| Plugin | Inclui | Não inclui (de propósito) |
| --- | --- | --- |
| **chat** | texto, sala geral, unicast/multicast/TCP, TCP privado básico | imagens, moderação, histórico persistente, criptografia |
| **screencast** | stream read-only, avisos de sessão | controle remoto do mouse/teclado, áudio |
Para evoluir: copie o padrão (`Plugin` + mensagens + painel na aba) e acrescente features no seu JAR — sem inflar o núcleo. Ver [10_tutorial_plugin.md](10_tutorial_plugin.md).