Files
pitiupi/README.md
T
Gabriel Felipe Souza SantosandCursor b10c196fc9 Adiciona catálogo de plugins e script único de build/run.
plugins.registry.json e scripts/pitiupi.sh substituem lista fixa de módulos; screen cast em MenuCategory.Streaming; README e docs atualizados.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-13 21:29:55 -03:00

3.6 KiB

pitiupi

Ferramenta P2P para práticas de Redes de Computadores: núcleo em Java com arquitetura de plugins (chat, compartilhamento de tela, chat multi-protocolo).

Documentação completa: docs/README.md · Quickstart: docs/documentation/00_quickstart.md


Início rápido (um comando)

Na raiz do repositório:

chmod +x scripts/pitiupi.sh   # só na primeira vez
./scripts/pitiupi.sh run --all

Compila o núcleo, os plugins do catálogo, instala JARs em pitiupi/plugins/ e abre a aplicação.

  1. Login: nome e porta (ex.: 5000).
  2. Menus dos plugins: barra Plugin → Social | Jogos | Streaming (cada plugin registra a categoria no código).
  3. P2P no mesmo PC: segunda instância com porta diferente (ex.: 5001).
./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.: pitiupi.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 Categoria (menu) Pasta
chat Social pitiupi.chat
mpchat Social pitiupi.mpChat
screencast Streaming pitiupi.screenCast

A categoria na interface vem do MenuCategory no Java (guiManager.createMenu(...)), não do nome do JAR. O campo menuCategory no JSON alinha build/link com a doc.

./scripts/pitiupi.sh run --all
./scripts/pitiupi.sh run --category Social
./scripts/pitiupi.sh run --plugins chat,screencast
./scripts/pitiupi.sh discover   # pastas pitiupi.* com SPI ainda não no catálogo

Novo plugin (resumo)

  1. Copiar estrutura de pitiupi.chat → pitiupi.meuPlugin (tutorial).
  2. Em createPlugin, registrar menu: guiManager.createMenu(MenuCategory.Jogos, ...) (ou Social / Streaming).
  3. Adicionar entrada em plugins.registry.json.
  4. ./scripts/pitiupi.sh run --plugins meuId.

O núcleo carrega todos os *.jar em pitiupi/plugins/ (pasta única). Detalhes: pitiupi/plugins/README.md.


Pré-requisitos

Ferramenta Uso
JDK com javac Compilação (OpenJDK 25 recomendado)
Apache Ant Módulos NetBeans
GNU Make pitiupi.mpChat
python3 Script scripts/pitiupi.sh (ler o catálogo)
sudo apt install openjdk-25-jdk ant make
./scripts/pitiupi.sh check

GUI: Swing — WSLg / DISPLAY=:0.


Comandos do script

Comando Ação
run Build + plugins/ + app
build Build + plugins/
link Só symlinks (JARs já existem)
list Catálogo e status do JAR
discover Sugestão de módulos pitiupi.*
check PATH + JSON válido

Opções: --all (padrão), --plugins ids, --category Social|Jogos|Streaming.


Teste em rede

Duas instâncias, portas distintas, mesma LAN. Ver docs/documentation/15_testes_e_gate.md e appendix_portas_e_multicast.md.


Origem

Projeto base UFSJ (Redes). GitHub: GabrielFSSantos/pitiupi.