diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/MidlewareTunnel.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/MidlewareTunnel.java index 6a9ff98bf1fc1f8ffc2503dce45b255627736c45..4d4f23800fcc3a35d657da2410578988b0475541 100644 --- a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/MidlewareTunnel.java +++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/MidlewareTunnel.java @@ -39,6 +39,9 @@ public class MidlewareTunnel implements Closeable { } public void open(int port) throws UnknownHostException, IOException { + if(ss != null) { + throw new IllegalStateException(); + } ss = new ServerSocket(0, 50, InetAddress.getByName("localhost")); ss.setSoTimeout(TIMEOUT); @@ -48,7 +51,7 @@ public class MidlewareTunnel implements Closeable { public void run() { while (!Thread.interrupted() && !ss.isClosed()) { try (Socket soc = ss.accept()) { - doTransfer(soc); + doTransfer(soc, port); } catch (SocketTimeoutException e) { // ignore and check interruption } catch (IOException e) { @@ -58,32 +61,6 @@ public class MidlewareTunnel implements Closeable { } } - - private void doTransfer(Socket soc) { - TestCommunicationWithNodes.log.info("START: doTransfer"); - Thread helpingThread = new Thread() { - @Override - public void run() { - readFromMiddleware(soc); - } - }; - DataTransferMethodExt transfer = dataTransfer.getDataTransferMethod(ipAddress, port, jobId, - sessionCode); - helpingThread.start(); - sendToMiddleware(soc); - TestCommunicationWithNodes.log.info("endDataTransfer"); - dataTransfer.endDataTransfer(transfer, sessionCode); - TestCommunicationWithNodes.log.info("endDataTransfer - DONE"); - - helpingThread.interrupt(); - try { - helpingThread.join(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } - - TestCommunicationWithNodes.log.info("END: doTransfer"); - } }; thread.start(); } @@ -107,6 +84,32 @@ public class MidlewareTunnel implements Closeable { return ss.getLocalPort(); } + private void doTransfer(Socket soc, int port) { + TestCommunicationWithNodes.log.info("START: doTransfer"); + Thread helpingThread = new Thread() { + @Override + public void run() { + readFromMiddleware(soc); + } + }; + DataTransferMethodExt transfer = dataTransfer.getDataTransferMethod(ipAddress, port, jobId, + sessionCode); + helpingThread.start(); + sendToMiddleware(soc); + TestCommunicationWithNodes.log.info("endDataTransfer"); + dataTransfer.endDataTransfer(transfer, sessionCode); + TestCommunicationWithNodes.log.info("endDataTransfer - DONE"); + + helpingThread.interrupt(); + try { + helpingThread.join(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + + TestCommunicationWithNodes.log.info("END: doTransfer"); + } + private void sendToMiddleware(Socket soc) { TestCommunicationWithNodes.log.info("START: sendToMiddleware"); try {