WIP bugfix
This commit is contained in:
1 parent
a86f4dbf82
commit
cac549f1ee
9 files changed
+120
-125
No files matched your search
@@ -6,6 +6,7 @@
|
|||||||
package pitiupi.GUI;
|
package pitiupi.GUI;
|
||||||
|
|
||||||
import pitiupi.control.ConnectionManager;
|
import pitiupi.control.ConnectionManager;
|
||||||
|
import pitiupi.control.GuiManager;
|
||||||
import pitiupi.control.PluginManager;
|
import pitiupi.control.PluginManager;
|
||||||
|
|
||||||
import javax.swing.JMenu;
|
import javax.swing.JMenu;
|
||||||
@@ -28,18 +29,13 @@ import pitiupi.control.HeartbeatManager;
|
|||||||
*/
|
*/
|
||||||
public class MainWindow extends javax.swing.JFrame {
|
public class MainWindow extends javax.swing.JFrame {
|
||||||
|
|
||||||
private final MenuBar menuBar;
|
private MenuBar menuBar;
|
||||||
private javax.swing.JScrollPane jScrollPane1;
|
|
||||||
private javax.swing.JLabel status;
|
private javax.swing.JLabel status;
|
||||||
private javax.swing.JPanel statusPanel;
|
|
||||||
private javax.swing.JTabbedPane tabbedPane;
|
|
||||||
|
|
||||||
private OnlineUsersPanel onlineUsersPanel;
|
private final ConnectionManager connectionManager;
|
||||||
|
private final PluginManager pluginManager;
|
||||||
|
private final GuiManager guiManager;
|
||||||
|
|
||||||
private String userName;
|
|
||||||
|
|
||||||
private ConnectionManager connectionManager;
|
|
||||||
private PluginManager pluginManager;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cria a janela principal da aplicação.
|
* Cria a janela principal da aplicação.
|
||||||
@@ -48,74 +44,79 @@ public class MainWindow extends javax.swing.JFrame {
|
|||||||
* @param port porta utilizada na comunicação multicast.
|
* @param port porta utilizada na comunicação multicast.
|
||||||
*/
|
*/
|
||||||
public MainWindow(String userName, int port) {
|
public MainWindow(String userName, int port) {
|
||||||
this.userName = userName;
|
initMenu();
|
||||||
|
|
||||||
pluginManager = new PluginManager(this);
|
pluginManager = new PluginManager(this);
|
||||||
|
|
||||||
|
connectionManager = new ConnectionManager(this, userName, pluginManager, port);
|
||||||
|
guiManager = new GuiManager(this);
|
||||||
|
|
||||||
|
initUserPanel();
|
||||||
|
initStatusPanel();
|
||||||
|
|
||||||
loadPlugins();
|
loadPlugins();
|
||||||
|
|
||||||
connectionManager = new ConnectionManager(this, pluginManager, port);
|
|
||||||
|
|
||||||
menuBar = new MenuBar(this);
|
|
||||||
|
|
||||||
initComponents();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initComponents() {
|
|
||||||
this.setJMenuBar(menuBar);
|
|
||||||
this.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
|
|
||||||
this.setTitle("Share My Sheet");
|
|
||||||
|
|
||||||
jScrollPane1 = new javax.swing.JScrollPane();
|
|
||||||
tabbedPane = new javax.swing.JTabbedPane();
|
|
||||||
statusPanel = new javax.swing.JPanel();
|
|
||||||
status = new javax.swing.JLabel();
|
|
||||||
|
|
||||||
jScrollPane1.setViewportView(tabbedPane);
|
|
||||||
statusPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
|
|
||||||
updateStatus();
|
|
||||||
statusPanel.add(status);
|
|
||||||
|
|
||||||
this.getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
|
|
||||||
this.getContentPane().add(statusPanel, java.awt.BorderLayout.PAGE_END);
|
|
||||||
|
|
||||||
this.onlineUsersPanel = new OnlineUsersPanel();
|
|
||||||
this.connectionManager.addPeerListener(onlineUsersPanel);
|
|
||||||
this.getContentPane().add(this.onlineUsersPanel, java.awt.BorderLayout.LINE_END);
|
|
||||||
|
|
||||||
this.pack();
|
this.pack();
|
||||||
|
|
||||||
this.setSize(new java.awt.Dimension(1024, 768));
|
this.setSize(new java.awt.Dimension(1024, 768));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initMenu() {
|
||||||
|
menuBar = new MenuBar(this);
|
||||||
|
|
||||||
|
this.setJMenuBar(menuBar);
|
||||||
|
this.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
|
||||||
|
this.setTitle("Share My Sheet");
|
||||||
|
|
||||||
|
javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
|
||||||
|
javax.swing.JTabbedPane tabbedPane = new javax.swing.JTabbedPane();
|
||||||
|
|
||||||
|
jScrollPane1.setViewportView(tabbedPane);
|
||||||
|
|
||||||
|
this.getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initUserPanel() {
|
||||||
|
OnlineUsersPanel onlineUsersPanel = new OnlineUsersPanel();
|
||||||
|
this.connectionManager.addPeerListener(onlineUsersPanel);
|
||||||
|
this.getContentPane().add(onlineUsersPanel, java.awt.BorderLayout.LINE_END);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initStatusPanel() {
|
||||||
|
javax.swing.JPanel statusPanel = new javax.swing.JPanel();
|
||||||
|
status = new javax.swing.JLabel();
|
||||||
|
|
||||||
|
statusPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
|
||||||
|
updateStatus();
|
||||||
|
statusPanel.add(status);
|
||||||
|
|
||||||
|
this.getContentPane().add(statusPanel, java.awt.BorderLayout.PAGE_END);
|
||||||
|
}
|
||||||
|
|
||||||
public void exit() {
|
public void exit() {
|
||||||
this.setVisible(false);
|
this.setVisible(false);
|
||||||
this.dispose();
|
this.dispose();
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUserName(){
|
|
||||||
return this.userName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ConnectionManager getConnectionManager() {
|
public ConnectionManager getConnectionManager() {
|
||||||
return connectionManager;
|
return connectionManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadPlugins() {
|
public void loadPlugins() {
|
||||||
pluginManager.loadPlugins();
|
pluginManager.loadPlugins(connectionManager, guiManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addMenu(JMenu menu) {
|
public void addMenu(JMenu menu) {
|
||||||
this.menuBar.addPlugin(menu);
|
this.menuBar.addPlugin(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUserName(String userName) {
|
public void setUserName(String userName) {
|
||||||
this.userName = userName;
|
connectionManager.setUserName(userName);
|
||||||
updateStatus();
|
updateStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateStatus() {
|
private void updateStatus() {
|
||||||
this.status.setText("Connected on port " + connectionManager + " name " + this.userName);
|
this.status.setText("Connected on port " + connectionManager + " name " + connectionManager.getUserName());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -12,23 +12,26 @@ import java.net.InetAddress;
|
|||||||
public class ConnectionManager {
|
public class ConnectionManager {
|
||||||
private final String pitiupiIdentifier;
|
private final String pitiupiIdentifier;
|
||||||
|
|
||||||
private PluginManager pluginManager;
|
private final PluginManager pluginManager;
|
||||||
|
|
||||||
private HeartbeatManager heartbeatManager;
|
private final HeartbeatManager heartbeatManager;
|
||||||
|
|
||||||
private SocketTCP socketTCP;
|
private SocketTCP socketTCP;
|
||||||
private SocketUDP socketUDP;
|
private SocketUDP socketUDP;
|
||||||
|
private String username;
|
||||||
private int port;
|
private int port;
|
||||||
|
|
||||||
public ConnectionManager(MainWindow main, PluginManager pluginManager, int port) {
|
public ConnectionManager(MainWindow main, String username, PluginManager pluginManager, int port) {
|
||||||
this.pluginManager = pluginManager;
|
this.pluginManager = pluginManager;
|
||||||
|
|
||||||
|
this.username = username;
|
||||||
this.port = port;
|
this.port = port;
|
||||||
|
|
||||||
pitiupiIdentifier = "Pitiupi.Alice.2026";
|
pitiupiIdentifier = "Pitiupi.Alice.2026";
|
||||||
|
|
||||||
reconnect();
|
reconnect();
|
||||||
|
|
||||||
heartbeatManager = new HeartbeatManager(main, this);
|
heartbeatManager = new HeartbeatManager(this);
|
||||||
heartbeatManager.start();
|
heartbeatManager.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,23 +52,18 @@ public class ConnectionManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean sendUdpMulticast(Message message) {
|
public void sendUdpMulticast(Message message) {
|
||||||
try {
|
try {
|
||||||
socketUDP.sendMulticast(message);
|
socketUDP.sendMulticast(message);
|
||||||
return true;
|
} catch (Exception _) {
|
||||||
} catch (Exception ex) {
|
System.err.println("Error sending UDP Multicast");
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void broadcastLocal(Message message) {
|
public void broadcastLocal(byte[] message) {
|
||||||
pluginManager.handlePublicMessage(message);
|
pluginManager.handlePublicMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean sendLocal(byte[] message, String receiverId) {
|
|
||||||
return pluginManager.handlePrivateMessage(message, receiverId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addPeerListener(PeerListener peerListener) {
|
public void addPeerListener(PeerListener peerListener) {
|
||||||
heartbeatManager.addPeerListener(peerListener);
|
heartbeatManager.addPeerListener(peerListener);
|
||||||
}
|
}
|
||||||
@@ -101,4 +99,12 @@ public class ConnectionManager {
|
|||||||
this.socketUDP.start();
|
this.socketUDP.start();
|
||||||
this.socketTCP.start();
|
this.socketTCP.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getUserName() {
|
||||||
|
return this.username;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserName(String userName) {
|
||||||
|
this.username = userName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package pitiupi.control;
|
||||||
|
|
||||||
|
import pitiupi.GUI.MainWindow;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
|
||||||
|
public class GuiManager {
|
||||||
|
private MainWindow mainWindow;
|
||||||
|
|
||||||
|
public GuiManager(MainWindow mainWindow) {
|
||||||
|
this.mainWindow = mainWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addMenu(JMenu menu) {
|
||||||
|
mainWindow.addMenu(menu);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -28,8 +28,6 @@ public class HeartbeatManager {
|
|||||||
|
|
||||||
private static final long HEARTBEAT_INTERVAL_MS = 5000;
|
private static final long HEARTBEAT_INTERVAL_MS = 5000;
|
||||||
private static final long PEER_TIMEOUT_MS = 15000; // ~3 batimentos perdidos
|
private static final long PEER_TIMEOUT_MS = 15000; // ~3 batimentos perdidos
|
||||||
|
|
||||||
private final MainWindow mainWindow;
|
|
||||||
private final ConnectionManager connectionManager;
|
private final ConnectionManager connectionManager;
|
||||||
private final Map<String, PeerInfo> peers = new ConcurrentHashMap<>();
|
private final Map<String, PeerInfo> peers = new ConcurrentHashMap<>();
|
||||||
private final List<PeerListener> listeners = new CopyOnWriteArrayList<>();
|
private final List<PeerListener> listeners = new CopyOnWriteArrayList<>();
|
||||||
@@ -39,11 +37,8 @@ public class HeartbeatManager {
|
|||||||
/**
|
/**
|
||||||
* Cria um gerenciador de heartbeat associado à janela principal da aplicação.
|
* 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, ConnectionManager connectionManager) {
|
public HeartbeatManager(ConnectionManager connectionManager) {
|
||||||
this.mainWindow = mainWindow;
|
|
||||||
this.connectionManager = connectionManager;
|
this.connectionManager = connectionManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +61,7 @@ public class HeartbeatManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void announce() {
|
private void announce() {
|
||||||
HeartbeatMessage msg = new HeartbeatMessage(mainWindow.getUserName(), instanceId);
|
HeartbeatMessage msg = new HeartbeatMessage(connectionManager.getUserName(), instanceId);
|
||||||
connectionManager.sendUdpMulticast(msg);
|
connectionManager.sendUdpMulticast(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class PluginLoader {
|
|||||||
this.mainWindow = main;
|
this.mainWindow = main;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadPlugins(List<Plugin> plugins, HashSet<String> loadedJars) {
|
public void loadPlugins(List<Plugin> plugins, HashSet<String> loadedJars, ConnectionManager connectionManager, GuiManager guiManager) {
|
||||||
File pluginDir = new File("plugins");
|
File pluginDir = new File("plugins");
|
||||||
File[] jarFiles = pluginDir.listFiles((dir, name) -> name.endsWith(".jar"));
|
File[] jarFiles = pluginDir.listFiles((dir, name) -> name.endsWith(".jar"));
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ public class PluginLoader {
|
|||||||
for (Plugin plugin : serviceLoader) {
|
for (Plugin plugin : serviceLoader) {
|
||||||
System.out.println("Loading: " + plugin.getName());
|
System.out.println("Loading: " + plugin.getName());
|
||||||
|
|
||||||
plugin.createPlugin(this.mainWindow);
|
plugin.createPlugin(connectionManager, guiManager);
|
||||||
plugins.add(plugin);
|
plugins.add(plugin);
|
||||||
loadedJars.add(file.getName());
|
loadedJars.add(file.getName());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package pitiupi.control;
|
package pitiupi.control;
|
||||||
|
|
||||||
import pitiupi.GUI.MainWindow;
|
import pitiupi.GUI.MainWindow;
|
||||||
import pitiupi.net.Message;
|
|
||||||
import pitiupi.net.tcp.TcpConnection;
|
import pitiupi.net.tcp.TcpConnection;
|
||||||
import pitiupi.plugin.Plugin;
|
import pitiupi.plugin.Plugin;
|
||||||
import pitiupi.plugin.PrivateConnectionPlugin;
|
import pitiupi.plugin.PrivateConnectionPlugin;
|
||||||
@@ -11,7 +10,7 @@ import java.util.HashSet;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class PluginManager {
|
public class PluginManager {
|
||||||
private PluginLoader pluginLoader;
|
private final PluginLoader pluginLoader;
|
||||||
private final List<Plugin> plugins;
|
private final List<Plugin> plugins;
|
||||||
private final HashSet<String> loadedJars;
|
private final HashSet<String> loadedJars;
|
||||||
|
|
||||||
@@ -21,11 +20,11 @@ public class PluginManager {
|
|||||||
this.loadedJars = new HashSet<>();
|
this.loadedJars = new HashSet<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadPlugins() {
|
public void loadPlugins(ConnectionManager connectionManager, GuiManager guiManager) {
|
||||||
pluginLoader.loadPlugins(plugins, loadedJars);
|
pluginLoader.loadPlugins(plugins, loadedJars, connectionManager, guiManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handlePublicMessage(Message msg) {
|
public void handlePublicMessage(byte[] msg) {
|
||||||
for (Plugin plugin : plugins) {
|
for (Plugin plugin : plugins) {
|
||||||
plugin.receiveMessage(msg);
|
plugin.receiveMessage(msg);
|
||||||
}
|
}
|
||||||
@@ -38,16 +37,14 @@ public class PluginManager {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean handlePrivateMessage(byte[] msg, String receiverId) {
|
public void handlePrivateMessage(TcpConnection connection, byte[] msg) {
|
||||||
Plugin plugin = getPlugin(receiverId);
|
Plugin plugin = getPlugin(connection.getReceiver());
|
||||||
if (plugin == null) return false;
|
if (plugin == null) return;
|
||||||
|
|
||||||
if (plugin instanceof PrivateConnectionPlugin privatePlugin) {
|
if (plugin instanceof PrivateConnectionPlugin privatePlugin) {
|
||||||
privatePlugin.receiveBytes(msg);
|
privatePlugin.receiveBytes(connection, msg);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean handleConnection(TcpConnection connection, String receiverId) {
|
public boolean handleConnection(TcpConnection connection, String receiverId) {
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
package pitiupi.net.tcp;
|
package pitiupi.net.tcp;
|
||||||
|
|
||||||
import pitiupi.GUI.MainWindow;
|
|
||||||
import pitiupi.control.ConnectionManager;
|
import pitiupi.control.ConnectionManager;
|
||||||
import pitiupi.control.PluginManager;
|
import pitiupi.control.PluginManager;
|
||||||
import pitiupi.net.Message;
|
import pitiupi.net.Message;
|
||||||
import pitiupi.plugin.Plugin;
|
|
||||||
import pitiupi.plugin.PrivateConnectionPlugin;
|
import pitiupi.plugin.PrivateConnectionPlugin;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
@@ -38,12 +36,13 @@ public class SocketTCP extends Thread {
|
|||||||
|
|
||||||
private final ConnectionManager connectionManager;
|
private final ConnectionManager connectionManager;
|
||||||
|
|
||||||
|
private final PluginManager pluginManager;
|
||||||
|
|
||||||
|
private final TcpConnectionManager tcpConnectionManager;
|
||||||
|
|
||||||
private ServerSocket serverSocket;
|
private ServerSocket serverSocket;
|
||||||
private InetAddress address;
|
private InetAddress address;
|
||||||
|
|
||||||
private final ConnectionManager connectionManager;
|
|
||||||
private final PluginManager pluginManager;
|
|
||||||
|
|
||||||
private volatile boolean running = true;
|
private volatile boolean running = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -303,38 +302,20 @@ public class SocketTCP extends Thread {
|
|||||||
|
|
||||||
SysInfoMessage sysMessage = SysInfoMessage.parseSystemInfo(bytes);
|
SysInfoMessage sysMessage = SysInfoMessage.parseSystemInfo(bytes);
|
||||||
|
|
||||||
if (sysMessage == null) {
|
if (sysMessage == null) {
|
||||||
pluginManager.handlePublicMessage(message);
|
pluginManager.handlePublicMessage(bytes);
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
switch (sysMessage.getType()) {
|
|
||||||
case CONNECTION_CLOSED, INTERNAL_ERROR -> {
|
|
||||||
tcpConnectionManager.closeConnection(connection);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
case MESSAGE_REJECTED -> {
|
|
||||||
logger.log(Level.SEVERE, "Somehow sent something that was not an Message");
|
|
||||||
}
|
|
||||||
default -> {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
SysInfoMessage.sendSystemInfo(
|
|
||||||
connection,
|
|
||||||
SysInfoType.MESSAGE_REJECTED,
|
|
||||||
"Public messages must be instances of Message"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (ClassNotFoundException ex) {
|
|
||||||
SysInfoMessage.sendSystemInfo(
|
switch (sysMessage.getType()) {
|
||||||
connection,
|
case CONNECTION_CLOSED, INTERNAL_ERROR -> {
|
||||||
SysInfoType.INTERNAL_ERROR,
|
tcpConnectionManager.closeConnection(connection);
|
||||||
"class Message not found."
|
return;
|
||||||
);
|
}
|
||||||
logger.log(Level.SEVERE, null, ex);
|
case MESSAGE_REJECTED -> {
|
||||||
tcpConnectionManager.closeConnection(connection);
|
logger.log(Level.SEVERE, "Somehow sent something that was not an Message");
|
||||||
|
}
|
||||||
|
default -> {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (SocketTimeoutException ex) {
|
catch (SocketTimeoutException ex) {
|
||||||
@@ -367,7 +348,7 @@ public class SocketTCP extends Thread {
|
|||||||
SysInfoMessage sysMessage = SysInfoMessage.parseSystemInfo(message);
|
SysInfoMessage sysMessage = SysInfoMessage.parseSystemInfo(message);
|
||||||
|
|
||||||
if (sysMessage == null) {
|
if (sysMessage == null) {
|
||||||
pluginManager.handlePrivateMessage(message, connection.getReceiver());
|
pluginManager.handlePrivateMessage(connection, message);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -441,7 +422,6 @@ public class SocketTCP extends Thread {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
receive();
|
receive();
|
||||||
|
|||||||
@@ -40,8 +40,8 @@ public class SocketUDP extends Thread {
|
|||||||
|
|
||||||
private InetAddress address;
|
private InetAddress address;
|
||||||
|
|
||||||
private ConnectionManager connectionManager;
|
private final ConnectionManager connectionManager;
|
||||||
private PluginManager pluginManager;
|
private final PluginManager pluginManager;
|
||||||
|
|
||||||
private volatile boolean running = true;
|
private volatile boolean running = true;
|
||||||
public final static String INET_ADDR = "224.0.0.3";
|
public final static String INET_ADDR = "224.0.0.3";
|
||||||
@@ -159,10 +159,7 @@ public class SocketUDP extends Thread {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Plugin plugin : main.getPlugins()) {
|
pluginManager.handlePublicMessage(msgPacket.getData());
|
||||||
System.out.println(msgPacket.getAddress().toString());
|
|
||||||
pluginManager.handlePublicMessage(msgPacket.getData());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
package pitiupi.plugin;
|
package pitiupi.plugin;
|
||||||
|
|
||||||
import pitiupi.GUI.MainWindow;
|
import pitiupi.GUI.MainWindow;
|
||||||
|
import pitiupi.control.ConnectionManager;
|
||||||
|
import pitiupi.control.GuiManager;
|
||||||
import pitiupi.net.Message;
|
import pitiupi.net.Message;
|
||||||
import pitiupi.net.tcp.TcpConnection;
|
import pitiupi.net.tcp.TcpConnection;
|
||||||
|
|
||||||
@@ -30,7 +32,7 @@ public interface Plugin {
|
|||||||
*
|
*
|
||||||
* @param window janela principal da aplicação.
|
* @param window janela principal da aplicação.
|
||||||
*/
|
*/
|
||||||
public void createPlugin(MainWindow window);
|
public void createPlugin(ConnectionManager connectionManager, GuiManager guiManager);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retorna uma mensagem utilizada pelo plugin.
|
* Retorna uma mensagem utilizada pelo plugin.
|
||||||
|
|||||||
Reference in new issue
Block a user