X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fkaka%2Fcakelight%2FPipeController.java;fp=src%2Fkaka%2Fcakelight%2FPipeController.java;h=10ed6be87143c719c5f5fea52e3fe0d79cddab01;hb=f1a6a6a5cf7d61c2df185206cb0a5b0e7eceb3c1;hp=0000000000000000000000000000000000000000;hpb=cc124c322996f68454baf4405b2959c84e771296;p=kaka%2Fcakelight.git diff --git a/src/kaka/cakelight/PipeController.java b/src/kaka/cakelight/PipeController.java new file mode 100644 index 0000000..10ed6be --- /dev/null +++ b/src/kaka/cakelight/PipeController.java @@ -0,0 +1,42 @@ +package kaka.cakelight; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +public class PipeController extends Thread { + private static final String PIPE = "cakectrl"; + private Console console; + + public static void start(Console console) { + new PipeController(console).start(); + } + + private PipeController(Console console) { + this.console = console; + } + + @Override + public void run() { + while (true) { + createPipe(); + try (BufferedReader reader = new BufferedReader(new FileReader(new File(PIPE)))) { + String input; + while ((input = reader.readLine()) != null) { + console.handleInput(input); + } + } catch (IOException e) { + System.out.println("Error reading from pipe '" + PIPE + "'"); + } + } + } + + private void createPipe() { + try { + Runtime.getRuntime().exec("mkfifo " + PIPE); + } catch (IOException e) { + e.printStackTrace(); + } + } +}