[LIB-9] Replace engine sending commands via transmitter
[chesshog.git] / src / main / java / org / hedgecode / chess / uci / ExternalEngine.java
index 7b09fb5..fe4a8c9 100644 (file)
@@ -16,8 +16,9 @@
 
 package org.hedgecode.chess.uci;
 
-import java.io.BufferedWriter;
-import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintWriter;
 
 /**
  * External UCI Engine.
@@ -27,21 +28,21 @@ import java.io.IOException;
 public class ExternalEngine implements Engine {
 
     private static final String COMMAND_FORMAT = "%s %s";
-    private static final String CRLF = System.getProperty("line.separator");
 
-    private BufferedWriter engineWriter;
+    private Transmitter<String> transmitter;
+    private PrintWriter engineWriter;
 
-    ExternalEngine(BufferedWriter writer) {
-        engineWriter = writer;
+    ExternalEngine(InputStream input, OutputStream output) {
+        transmitter = new ExternalEngineTransmitter(input);
+        engineWriter = new PrintWriter(output, true);
+    }
+
+    public Transmitter<String> transmitter() {
+        return transmitter;
     }
 
     private void write(String command) {
-        try {
-            engineWriter.write(command);
-            engineWriter.write(CRLF);
-            engineWriter.flush();
-        } catch (IOException ignored) {
-        }
+        engineWriter.println(command);
     }
 
     private String format(String name, String params) {