Alinha mpChat e screenCast a ConnectionManager/GuiManager, adiciona docs em docs/ e README de plugins; remove artefatos de build do índice. Co-authored-by: Cursor <cursoragent@cursor.com>
3.3 KiB
Visão geral
O Pitiupi é uma plataforma P2P baseada em uma arquitetura de plugins,
desenvolvida para permitir a criação de aplicações distribuídas sobre uma
infraestrutura comum de comunicação em rede.
A aplicação fornece mecanismos de descoberta de usuários, comunicação entre peers, troca de mensagens serializadas e integração de extensões por meio de plugins. A comunicação de rede utiliza dois protocolos de transporte: UDP, empregado principalmente na descoberta e comunicação multicast entre as instâncias, e TCP, utilizado para comunicação direta e persistente entre peers.
O projeto foi desenvolvido como suporte às práticas da disciplina de Redes de Computadores, servindo também como base para experimentação de aplicações distribuídas e desenvolvimento de projetos acadêmicos.
Índice: README.md.
Arquitetura geral
A aplicação é dividida em três grupos principais:
- Núcleo da aplicação: a
MainWindowcoordena GUI, rede e plugins. - Sistema de plugins: extensões em JAR carregadas de
pitiupi/plugins/. - Comunicação de rede: UDP (
SocketUDP) e TCP (SocketTCP,TcpConnection).
Inicialização da aplicação
- A
MainWindowé criada após o diálogo de login (nome e porta). - O
SocketUDPassocia-se à porta configurada e ingressa no grupo multicast. - O
SocketTCPcria umServerSocketna mesma porta para conexões TCP. - Os mecanismos de comunicação iniciam threads de recepção.
- O
HeartbeatManagerenvia heartbeats periodicamente. - O painel de usuários online registra-se como listener do heartbeat.
- O
PluginManagercarrega os JARs emplugins/via SPI.
Ver também: 05_udp_multicast.md, 09_sistema_de_plugins.md.
Interface gráfica
A interface gráfica da aplicação é baseada em Swing e é centralizada na
classe MainWindow.
Durante a inicialização, cada plugin recebe ConnectionManager e GuiManager
no método createPlugin().
A extensão usual é registrar menus por categoria (MenuCategory). Ver
12_menus_unicast_multicast.md.
Diagrama de comunicação
+------------------+
| MainWindow |
+--------+---------+
|
+--------------------+--------------------+
| | |
v v v
HeartbeatManager SocketUDP SocketTCP
| | |
v v v
Heartbeat UDP Multicast TCP Connections
| |
+---------+----------+
|
v
Plugins
|
v
Message
O UDP multicast sustenta presença e mensagens broadcast/unicast; o TCP sustenta canais diretos com framing de mensagens. Detalhes em 05 e 06.