atualizando documentacao depois do merge

This commit is contained in:
GustavoHMDS 2026-08-11 14:30:17 -03:00
parent 543073e84e
commit 5c69189293
4 changed files with 49 additions and 36 deletions

View File

@ -5,27 +5,10 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="62118a1b-608f-4144-b29c-cf46419ca676" name="Changes" comment=""> <list default="true" id="62118a1b-608f-4144-b29c-cf46419ca676" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/pitiupi/Documentation.md" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/pitiupi/PluginTutorial.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi.chat/build/built-jar.properties" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi.chat/build/built-jar.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi.chat/dist/pitiupi.chat.jar" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi.chat/dist/pitiupi.chat.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi.screenCast/build/built-jar.properties" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi.screenCast/build/built-jar.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi.screenCast/dist/pitiupi.screenCast.jar" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi.screenCast/dist/pitiupi.screenCast.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/build/classes/.netbeans_automatic_build" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/build/classes/.netbeans_update_resources" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/GUI/Login.class" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/GUI/Login.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/GUI/MainWindow.class" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/GUI/MainWindow.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/GUI/MenuBar.class" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/GUI/MenuBar.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/Main$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/Main$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/Main.class" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/Main.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/control/PluginLoader.class" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/control/PluginLoader.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/net/Socket.class" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/net/Socket.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/plugin/Plugin.class" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/build/classes/pitiupi/plugin/Plugin.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/dist/README.TXT" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/dist/pitiupi.jar" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/dist/pitiupi.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/plugins/pitiupi.chat.jar" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/plugins/pitiupi.chat.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/plugins/pitiupi.screenCast.jar" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/plugins/pitiupi.screenCast.jar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/src/pitiupi/GUI/MenuBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/src/pitiupi/GUI/MenuBar.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/pitiupi/src/pitiupi/GUI/MenuBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/src/pitiupi/GUI/MenuBar.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/src/pitiupi/control/HeartbeatManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/src/pitiupi/control/HeartbeatManager.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pitiupi/src/pitiupi/net/Socket.java" beforeDir="false" afterPath="$PROJECT_DIR$/pitiupi/src/pitiupi/net/Socket.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -43,20 +26,20 @@
<option name="hideEmptyMiddlePackages" value="true" /> <option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent"><![CDATA[{ <component name="PropertiesComponent">{
"keyToString": { &quot;keyToString&quot;: {
"Application.Main.executor": "Run", &quot;Application.Main.executor&quot;: &quot;Run&quot;,
"ModuleVcsDetector.initialDetectionPerformed": "true", &quot;ModuleVcsDetector.initialDetectionPerformed&quot;: &quot;true&quot;,
"RunOnceActivity.ShowReadmeOnStart": "true", &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", &quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
"RunOnceActivity.git.unshallow": "true", &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
"git-widget-placeholder": "feature/help-and-documentation", &quot;git-widget-placeholder&quot;: &quot;feature/help-and-documentation&quot;,
"ignore.virus.scanning.warn.message": "true", &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
"kotlin-language-version-configured": "true", &quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
"last_opened_file_path": "C:/Users/extre/OneDrive/Documentos/Faculdade/2026_02/Monitoria/Pitiupi", &quot;last_opened_file_path&quot;: &quot;C:/Users/extre/OneDrive/Documentos/Faculdade/2026_02/Monitoria/Pitiupi&quot;,
"settings.editor.selected.configurable": "preferences.keymap" &quot;settings.editor.selected.configurable&quot;: &quot;preferences.keymap&quot;
} }
}]]></component> }</component>
<component name="RecentsManager"> <component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS"> <key name="CopyFile.RECENT_KEYS">
<recent name="C:\Users\extre\OneDrive\Documentos\Faculdade\2026_02\Monitoria\Pitiupi\pitiupi\plugins" /> <recent name="C:\Users\extre\OneDrive\Documentos\Faculdade\2026_02\Monitoria\Pitiupi\pitiupi\plugins" />

View File

@ -29,6 +29,11 @@ public class MenuBar extends JMenuBar {
private javax.swing.JMenuItem exitMenu; private javax.swing.JMenuItem exitMenu;
private final MainWindow mainWindow; private final MainWindow mainWindow;
/**
* Cria a barra de menus principal da aplicação.
*
* @param mainWindow mainWindow janela principal da aplicação utilizada para executar
*/
public MenuBar(MainWindow mainWindow) { public MenuBar(MainWindow mainWindow) {
this.mainWindow = mainWindow; this.mainWindow = mainWindow;
this.initComponents(); this.initComponents();

View File

@ -35,16 +35,28 @@ public class HeartbeatManager {
private ScheduledExecutorService scheduler; private ScheduledExecutorService scheduler;
private final String instanceId = UUID.randomUUID().toString(); private final String instanceId = UUID.randomUUID().toString();
/**
* Cria um gerenciador de heartbeat associado à janela principal da aplicação.
*
* @param mainWindow janela principal utilizada para obter o nome do usuário
* e o socket de comunicação.
*/
public HeartbeatManager(MainWindow mainWindow) { public HeartbeatManager(MainWindow mainWindow) {
this.mainWindow = mainWindow; this.mainWindow = mainWindow;
} }
/**
* Inicia o mecanismo de heartbeat.
*/
public void start() { public void start() {
scheduler = Executors.newScheduledThreadPool(1); scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(this::announce, 0, HEARTBEAT_INTERVAL_MS, TimeUnit.MILLISECONDS); scheduler.scheduleAtFixedRate(this::announce, 0, HEARTBEAT_INTERVAL_MS, TimeUnit.MILLISECONDS);
scheduler.scheduleAtFixedRate(this::checkTimeouts, HEARTBEAT_INTERVAL_MS, HEARTBEAT_INTERVAL_MS, TimeUnit.MILLISECONDS); scheduler.scheduleAtFixedRate(this::checkTimeouts, HEARTBEAT_INTERVAL_MS, HEARTBEAT_INTERVAL_MS, TimeUnit.MILLISECONDS);
} }
/**
* Para o mecanismo de heartbeat e encerra as tarefas agendadas.
*/
public void stop() { public void stop() {
if (scheduler != null) { if (scheduler != null) {
scheduler.shutdownNow(); scheduler.shutdownNow();
@ -64,8 +76,8 @@ public class HeartbeatManager {
/** /**
* Processa uma mensagem de heartbeat recebida de outro usuário. * Processa uma mensagem de heartbeat recebida de outro usuário.
* *
* <p>Atualiza a informação do peer correspondente e notifica os listeners * <p>Atualiza o momento da última atividade do peer correspondente e notifica os listeners
* caso um novo usuário seja identificado.</p> * caso outra instância da aplicação seja identificada.</p>
* *
* <p>Mensagens de heartbeat enviadas pela própria aplicação são ignoradas.</p> * <p>Mensagens de heartbeat enviadas pela própria aplicação são ignoradas.</p>
* *
@ -118,10 +130,20 @@ public class HeartbeatManager {
l.onPeersChanged(new ArrayList<>(peers.values())); l.onPeersChanged(new ArrayList<>(peers.values()));
} }
/**
* Remove um listener previamente registrado.
*
* @param l listener que deixará de receber atualizações.
*/
public void removePeerListener(PeerListener l) { public void removePeerListener(PeerListener l) {
listeners.remove(l); listeners.remove(l);
} }
/**
* Retorna uma cópia da lista atual de peers conhecidos.
*
* @return lista contendo os peers atualmente conhecidos.
*/
public List<PeerInfo> getPeers() { public List<PeerInfo> getPeers() {
return new ArrayList<>(peers.values()); return new ArrayList<>(peers.values());
} }

View File

@ -20,7 +20,7 @@ import pitiupi.plugin.Plugin;
import pitiupi.net.HeartbeatMessage; import pitiupi.net.HeartbeatMessage;
/** /**
* Responsável pela comunicação multicast entre a aplicação e os plugins. * "Responsável pela comunicação multicast da aplicação e pelo encaminhamento de mensagens aos plugins."
* *
* <p>Esta classe gerencia o envio e o recebimento de mensagens, além de * <p>Esta classe gerencia o envio e o recebimento de mensagens, além de
* manter a conexão com o grupo multicast utilizado pela aplicação.</p> * manter a conexão com o grupo multicast utilizado pela aplicação.</p>
@ -72,6 +72,9 @@ public class Socket extends Thread {
multicastSocket.send(msgPacket); multicastSocket.send(msgPacket);
} }
/**
* Encerra a comunicação multicast e interrompe a recepção de mensagens.
*/
public void close() { public void close() {
running = false; running = false;
if (multicastSocket != null) { if (multicastSocket != null) {