Files
pitiupi/README.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

117 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# pitiupi
Ferramenta **P2P** para práticas de Redes de Computadores: núcleo em Java com arquitetura de **plugins** (conversa na rede e compartilhamento de tela).
**Documentação completa:** [docs/README.md](docs/README.md) · **Quickstart:** [docs/documentation/00_quickstart.md](docs/documentation/00_quickstart.md)
---
## Início rápido (um comando)
Na **raiz do repositório**:
```bash
chmod +x scripts/pitiupi.sh # só na primeira vez
./scripts/pitiupi.sh run --all
```
Compila o núcleo, os plugins do [catálogo](plugins.registry.json), cria symlinks em **`PITIUPI_HOME/plugins`** (padrão `~/pitiupi/plugins`) e abre a aplicação.
1. Login: **nome** e **porta** (ex.: `5000`).
2. Abra plugins na aba **Plugins** (galeria) ou pelas ações na lista **Usuários nesta rede** (peer actions).
3. P2P no mesmo PC: segunda instância com **porta diferente** (ex.: `5001`).
```bash
./scripts/pitiupi.sh list # ids, categorias, JAR buildado?
./scripts/pitiupi.sh check # ferramentas + catálogo
```
---
## Catálogo de plugins (`plugins.registry.json`)
Novos módulos entram no repositório adicionando uma entrada no JSON (não é preciso editar o script):
| Campo | Significado |
| --- | --- |
| `id` | Usado em `--plugins chat,meuJogo` |
| `dir` | Pasta do módulo (ex.: `plugins/xadrez`) |
| `build` | `ant` ou `make` |
| `jar` | Caminho do JAR relativo a `dir` |
| `menuCategory` | `Social`, `Jogos` ou `Streaming` — filtro CLI e documentação |
Plugins de referência hoje:
| id | Uso didático | Pasta |
| --- | --- | --- |
| `chat` | Sala geral, peer por IP, TCP privado | `plugins/chat` |
| `screencast` | Multicast ou unicast de tela | `plugins/screencast` |
Na interface, o texto das abas vem de `getDisplayName()` em cada plugin. O campo `menuCategory` no JSON alinha build/link com a documentação.
```bash
./scripts/pitiupi.sh run --all
./scripts/pitiupi.sh run --category Social
./scripts/pitiupi.sh run --plugins chat,screencast
./scripts/pitiupi.sh discover # pastas em plugins/ com SPI ainda não no catálogo
```
---
## Novo plugin (resumo)
1. Copiar estrutura de `plugins/chat` → `plugins/meuPlugin` ([tutorial](docs/documentation/10_tutorial_plugin.md)).
2. Em `createPlugin`, registrar painel com `PluginWorkspace` / `bindShellWorkspaceContent` e, se fizer sentido, **peer actions** na lista lateral.
3. Adicionar entrada em [`plugins.registry.json`](plugins.registry.json).
4. `./scripts/pitiupi.sh link --all` e reiniciar o app.
O núcleo carrega **todos os `*.jar`** em `PITIUPI_HOME/plugins`. Detalhes: [pitiupi/plugins/README.md](pitiupi/plugins/README.md).
---
## Pré-requisitos
| Ferramenta | Uso |
| --- | --- |
| **JDK** com `javac` | Compilação (OpenJDK **25** recomendado; núcleo Java 17) |
| **Apache Ant** | Módulos NetBeans |
| **python3** | Script `scripts/pitiupi.sh` (ler o catálogo) |
```bash
sudo apt install openjdk-25-jdk ant
./scripts/pitiupi.sh check
cd pitiupi && ant test # testes JUnit do núcleo
```
**GUI:** Swing — WSLg / `DISPLAY=:0`.
---
## Comandos do script
| Comando | Ação |
| --- | --- |
| `run` | Build + link + app |
| `build` | Build + link |
| `link` | Só symlinks (JARs já existem) |
| `list` | Catálogo e status do JAR |
| `discover` | Sugestão de módulos com SPI |
| `check` | PATH + JSON válido |
Opções: `--all` (padrão), `--plugins ids`, `--category Social|Jogos|Streaming`.
---
## Teste em rede
- **Mesmo PC:** duas instâncias, portas distintas (ex. 5000 e 5001).
- **Dois PCs na mesma Wi‑Fi:** mesma porta (ex. 5000), nomes diferentes, mesmos JARs em `~/pitiupi/plugins` em cada máquina.
Ver [docs/documentation/15_testes_e_gate.md](docs/documentation/15_testes_e_gate.md) e [appendix_portas_e_multicast.md](docs/documentation/appendix_portas_e_multicast.md).
---
## Origem
Projeto base UFSJ (Redes). GitHub: [GabrielFSSantos/pitiupi](https://github.com/GabrielFSSantos/pitiupi).