client

Clone or download

Auto reconnect, Refactored some messages, Added ready method

Modified Files

--- 'a/src/main/java/com/stream_pi/client/connection/Client.java'
+++ b/src/main/java/com/stream_pi/client/connection/Client.java
@@ -36,18 +36,21 @@ public class Client extends Thread
private ObjectOutputStream oos;
private ObjectInputStream ois;
- private final AtomicBoolean stop = new AtomicBoolean(false);
+ private AtomicBoolean stop = new AtomicBoolean(false);
- private final ClientListener clientListener;
- private final ExceptionAndAlertHandler exceptionAndAlertHandler;
+ private ClientListener clientListener;
+ private ExceptionAndAlertHandler exceptionAndAlertHandler;
- private final ClientInfo clientInfo;
+ private ClientInfo clientInfo;
- private final String serverIP;
- private final int serverPort;
- private final Logger logger;
+ private String serverIP;
+ private int serverPort;
+ private Logger logger;
- public Client(String serverIP, int serverPort, ClientListener clientListener, ExceptionAndAlertHandler exceptionAndAlertHandler)
+ private Runnable onConnectAndSetupToBeRun;
+
+ public Client(String serverIP, int serverPort, ClientListener clientListener,
+ ExceptionAndAlertHandler exceptionAndAlertHandler, Runnable onConnectAndSetupToBeRun)
{
this.serverIP = serverIP;
this.serverPort = serverPort;
@@ -56,6 +59,8 @@ public class Client extends Thread
this.clientInfo = ClientInfo.getInstance();
this.clientListener = clientListener;
+ this.onConnectAndSetupToBeRun = onConnectAndSetupToBeRun;
+
logger = Logger.getLogger(Client.class.getName());
new Thread(new Task<Void>() {
@@ -93,6 +98,7 @@ public class Client extends Thread
e.printStackTrace();
throw new MinorException("Unable to set up io Streams to server. Check connection and try again.");
}
+
start();
} catch (MinorException e)
{
@@ -156,6 +162,9 @@ public class Client extends Thread
switch (header)
{
+ case "ready" : onServerReady();
+ break;
+
case "action_icon" : onActionIconReceived(message);
break;
@@ -333,6 +342,15 @@ public class Client extends Thread
}
}
+ public void onServerReady()
+ {
+ if(onConnectAndSetupToBeRun!=null)
+ {
+ onConnectAndSetupToBeRun.run();
+ onConnectAndSetupToBeRun = null;
+ }
+ }
+
public void sendThemesToServer() throws SevereException
{
Message message = new Message("themes");
@@ -394,13 +412,11 @@ public class Client extends Thread
public void sendClientScreenDetails() throws SevereException
{
- String screenWidth = clientListener.getStageWidth() + "";
- String screenHeight = clientListener.getStageHeight() + "";
-
Message toBeSent = new Message("client_screen_details");
- toBeSent.setStringArrValue(
- screenWidth,
- screenHeight
+
+ toBeSent.setDoubleArrValue(
+ clientListener.getStageWidth(),
+ clientListener.getStageHeight()
);
sendMessage(toBeSent);
@@ -454,20 +470,23 @@ public class Client extends Thread
String[] arr = new String[clientListener.getClientProfiles().getClientProfiles().size()];
+ int totalActions = 0;
+
for(int i = 0;i<arr.length;i++)
{
ClientProfile clientProfile = clientListener.getClientProfiles().getClientProfiles().get(i);
+ totalActions += clientProfile.getActions().size();
arr[i] = clientProfile.getID();
}
message.setStringArrValue(arr);
+ message.setIntValue(totalActions);
sendMessage(message);
}
public void sendProfileDetailsToServer(Message message) throws SevereException
{
String ID = message.getStringValue();
- logger.info("IDDDD : "+ID);
Message tbs1 = new Message("profile_details");
--- 'a/src/main/java/com/stream_pi/client/connection/ClientListener.java'
+++ b/src/main/java/com/stream_pi/client/connection/ClientListener.java
@@ -47,6 +47,8 @@ public interface ClientListener
void setupClientConnection();
+ void setupClientConnection(Runnable onConnect);
+
void updateSettingsConnectDisconnectButton();
void onCloseRequest();
--- 'a/src/main/java/com/stream_pi/client/controller/Controller.java'
+++ b/src/main/java/com/stream_pi/client/controller/Controller.java
@@ -166,13 +166,20 @@ public class Controller extends Base
}
}
-
-
@Override
public void setupClientConnection()
{
+ setupClientConnection(null);
+ }
+
+ @Override
+ public void setupClientConnection(Runnable onConnect)
+ {
+ if(getSettingsPane().getConnectDisconnectButton().isDisabled()) //probably already connecting
+ return;
+
Platform.runLater(()->getSettingsPane().setDisableStatus(true));
- client = new Client(getConfig().getSavedServerHostNameOrIP(), getConfig().getSavedServerPort(), this, this);
+ client = new Client(getConfig().getSavedServerHostNameOrIP(), getConfig().getSavedServerPort(), this, this, onConnect);
}
@Override
--- 'a/src/main/java/com/stream_pi/client/window/dashboard/actiongridpane/ActionBox.java'
+++ b/src/main/java/com/stream_pi/client/window/dashboard/actiongridpane/ActionBox.java
@@ -3,8 +3,11 @@ package com.stream_pi.client.window.dash
import com.stream_pi.action_api.action.Action;
import com.stream_pi.action_api.action.ActionType;
import com.stream_pi.action_api.action.DisplayTextAlignment;
+import com.stream_pi.client.connection.ClientListener;
+import com.stream_pi.client.io.Config;
import com.stream_pi.client.window.ExceptionAndAlertHandler;
import com.stream_pi.util.alert.StreamPiAlertType;
+import com.stream_pi.util.exception.SevereException;
import javafx.animation.Interpolator;
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
@@ -133,8 +136,22 @@ public class ActionBox extends StackPane
{
if(!getActionGridPaneListener().isConnected())
{
- exceptionAndAlertHandler.onAlert("Not Connected", "Not Connected to any Server", StreamPiAlertType.ERROR);
- return;
+ try
+ {
+ if(Config.getInstance().isTryConnectingWhenActionClicked())
+ {
+ clientListener.setupClientConnection(this::actionClicked);
+ }
+ else
+ {
+ exceptionAndAlertHandler.onAlert("Not Connected", "Not Connected to any Server", StreamPiAlertType.ERROR);
+ }
+ return;
+ }
+ catch (SevereException e)
+ {
+ exceptionAndAlertHandler.handleSevereException(e);
+ }
}
@@ -173,14 +190,17 @@ public class ActionBox extends StackPane
private int size;
private ActionGridPaneListener actionGridPaneListener;
+ private ClientListener clientListener;
- public ActionBox(int size, ExceptionAndAlertHandler exceptionAndAlertHandler, ActionGridPaneListener actionGridPaneListener, int row, int col)
+ public ActionBox(int size, ExceptionAndAlertHandler exceptionAndAlertHandler,
+ ClientListener clientListener, ActionGridPaneListener actionGridPaneListener, int row, int col)
{
this.actionGridPaneListener = actionGridPaneListener;
this.exceptionAndAlertHandler = exceptionAndAlertHandler;
this.size = size;
this.row = row;
this.col = col;
+ this.clientListener = clientListener;
baseInit();
}
@@ -242,8 +262,9 @@ public class ActionBox extends StackPane
this.parent = parent;
}
+ /*
public ActionBox(int size, Action action, ExceptionAndAlertHandler exceptionAndAlertHandler,
- ActionGridPaneListener actionGridPaneListener, int row, int col)
+ ClientListener clientListener, ActionGridPaneListener actionGridPaneListener, int row, int col)
{
this.actionGridPaneListener = actionGridPaneListener;
this.exceptionAndAlertHandler = exceptionAndAlertHandler;
@@ -257,7 +278,7 @@ public class ActionBox extends StackPane
init();
- }
+ }*/
public void setAction(Action action)
{
--- 'a/src/main/java/com/stream_pi/client/window/dashboard/actiongridpane/ActionGridPane.java'
+++ b/src/main/java/com/stream_pi/client/window/dashboard/actiongridpane/ActionGridPane.java
@@ -263,7 +263,7 @@ public class ActionGridPane extends Grid
public ActionBox addBlankActionBox(int col, int row)
{
- ActionBox actionBox = new ActionBox(getClientProfile().getActionSize(), exceptionAndAlertHandler, this, row, col);
+ ActionBox actionBox = new ActionBox(getClientProfile().getActionSize(), exceptionAndAlertHandler, clientListener, this, row, col);
actionBox.setStreamPiParent(currentParent);
--- 'a/src/main/java/com/stream_pi/client/window/settings/SettingsBase.java'
+++ b/src/main/java/com/stream_pi/client/window/settings/SettingsBase.java
@@ -55,6 +55,8 @@ public class SettingsBase extends VBox {
private ToggleButton startOnBootToggleButton;
+ private ToggleButton tryConnectingToServerIfActionClickedToggleButton;
+
private ToggleButton connectOnStartupToggleButton;
private ToggleButton vibrateOnActionPressToggleButton;
@@ -124,6 +126,9 @@ public class SettingsBase extends VBox {
startOnBootToggleButton = new ToggleButton("Start On Boot");
startOnBootToggleButton.managedProperty().bind(startOnBootToggleButton.visibleProperty());
+ tryConnectingToServerIfActionClickedToggleButton = new ToggleButton("Try Connecting to Server If not connected on Action click");
+ tryConnectingToServerIfActionClickedToggleButton.managedProperty().bind(tryConnectingToServerIfActionClickedToggleButton.visibleProperty());
+
fullScreenModeToggleButton = new ToggleButton("Full Screen");
fullScreenModeToggleButton.managedProperty().bind(fullScreenModeToggleButton.visibleProperty());
@@ -223,6 +228,7 @@ public class SettingsBase extends VBox {
vBox.getChildren().addAll(
shutdownButton,
+ tryConnectingToServerIfActionClickedToggleButton,
fullScreenModeToggleButton,
connectOnStartupToggleButton,
vibrateOnActionPressToggleButton,
@@ -334,6 +340,11 @@ public class SettingsBase extends VBox {
connectDisconnectButton.setDisable(status);
}
+ public Button getConnectDisconnectButton()
+ {
+ return connectDisconnectButton;
+ }
+
public void onShutdownButtonClicked()
{
clientListener.onCloseRequest();
@@ -427,6 +438,7 @@ public class SettingsBase extends VBox {
connectOnStartupToggleButton.setSelected(config.isConnectOnStartup());
vibrateOnActionPressToggleButton.setSelected(config.isVibrateOnActionClicked());
+ tryConnectingToServerIfActionClickedToggleButton.setSelected(config.isTryConnectingWhenActionClicked());
}
public void onSaveButtonClicked()
@@ -512,6 +524,9 @@ public class SettingsBase extends VBox {
+ config.setTryConnectingWhenActionClicked(tryConnectingToServerIfActionClickedToggleButton.isSelected());
+
+
boolean startOnBoot = startOnBootToggleButton.isSelected();
--- 'a/src/main/resources/META-INF/native-image/serialization-config.json'
+++ b/src/main/resources/META-INF/native-image/serialization-config.json
@@ -2,5 +2,10 @@
{"name":"com.stream_pi.util.comms.Message"},
{"name": "java.lang.String"},
{"name": "java.lang.String[]"},
- {"name": "byte[]"}
+ {"name": "byte"},
+ {"name": "byte[]"},
+ {"name": "int"},
+ {"name": "int[]"},
+ {"name": "double"},
+ {"name": "double[]"}
]
\ No newline at end of file