Check method moved to new class called ping so that refresh will be called on new thread.

#story[1087]
This commit is contained in:
zwu18
2017-07-26 21:59:43 +12:00
parent 243c450790
commit 53a01402e1
4 changed files with 67 additions and 22 deletions
@@ -0,0 +1,46 @@
package visualiser.model;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
/**
* Created by David on 26/07/2017.
*/
public class Ping implements Runnable {
private final String hostname;
private final int port;
private final RaceConnection rc;
public Ping(String hostname, int port, RaceConnection rc){
this.hostname = hostname;
this.port = port;
this.rc = rc;
}
public boolean pingPort(){
//TODO the connection needs to be moved to its own thread, so it doesn't block fx thread.
InetSocketAddress i = new InetSocketAddress(hostname, port);
try (Socket s = new Socket()){
s.connect(i, 750);//TODO this should be at least a second or two, once moved to its own thread
s.shutdownInput();
s.shutdownOutput();
s.close();
rc.statusProperty().set("Ready");
//System.out.println(String.valueOf(s.isClosed()));
return true;
} catch (IOException e) {
rc.statusProperty().set("Offline");
}
return false;
}
@Override
public void run() {
pingPort();
}
}
@@ -35,21 +35,9 @@ public class RaceConnection {
* @return true if socket can connect
*/
public boolean check() {
//TODO the connection needs to be moved to its own thread, so it doesn't block fx thread.
InetSocketAddress i = new InetSocketAddress(hostname.get(), port);
try (Socket s = new Socket()){
s.connect(i, 750);//TODO this should be at least a second or two, once moved to its own thread
status.set("Ready");
s.shutdownInput();
s.shutdownOutput();
s.close();
//System.out.println(String.valueOf(s.isClosed()));
return true;
} catch (IOException e) {
}
status.set("Offline");
return false;
Ping ping = new Ping(hostname.get(), port, this);
new Thread(ping).start();
return true;
}
public String getHostname() {
@@ -32,8 +32,6 @@ public abstract class ResizableCanvas extends Canvas {
public abstract void draw();
@Override
public boolean isResizable() {
return true;