< prev index next >

src/jdk.jshell/share/classes/jdk/jshell/execution/DemultiplexInput.java

Print this page
rev 3613 : imported patch 8131023

*** 38,56 **** * @see Util#demultiplexInput(java.io.InputStream, java.io.OutputStream, java.io.OutputStream, java.io.OutputStream...) */ class DemultiplexInput extends Thread { private final DataInputStream delegate; - private final PipeInputStream command; private final Map<String, OutputStream> io; ! DemultiplexInput(InputStream input, PipeInputStream command, ! Map<String, OutputStream> io) { super("output reader"); this.delegate = new DataInputStream(input); - this.command = command; this.io = io; } @Override public void run() { try { --- 38,55 ---- * @see Util#demultiplexInput(java.io.InputStream, java.io.OutputStream, java.io.OutputStream, java.io.OutputStream...) */ class DemultiplexInput extends Thread { private final DataInputStream delegate; private final Map<String, OutputStream> io; + private final Iterable<OutputStream> closeList; ! DemultiplexInput(InputStream input, Map<String, OutputStream> io, Iterable<OutputStream> closeList) { super("output reader"); this.delegate = new DataInputStream(input); this.io = io; + this.closeList = closeList; } @Override public void run() { try {
*** 63,89 **** DemultiplexInput.this.delegate.readFully(name); int dataLen = delegate.read(); byte[] data = new byte[dataLen]; DemultiplexInput.this.delegate.readFully(data); String chan = new String(name, "UTF-8"); - if (chan.equals("command")) { - for (byte b : data) { - command.write(Byte.toUnsignedInt(b)); - } - } else { OutputStream out = io.get(chan); if (out == null) { debug("Unexpected channel name: %s", chan); } else { out.write(data); } } - } } catch (IOException ex) { debug(ex, "Failed reading output"); } finally { ! command.close(); } } /** * Log debugging information. Arguments as for {@code printf}. --- 62,88 ---- DemultiplexInput.this.delegate.readFully(name); int dataLen = delegate.read(); byte[] data = new byte[dataLen]; DemultiplexInput.this.delegate.readFully(data); String chan = new String(name, "UTF-8"); OutputStream out = io.get(chan); if (out == null) { debug("Unexpected channel name: %s", chan); } else { out.write(data); } } } catch (IOException ex) { debug(ex, "Failed reading output"); } finally { ! for (OutputStream out : closeList) { ! try { ! out.close(); ! } catch (IOException ex) { ! debug(ex, "Failed reading output"); ! } ! } } } /** * Log debugging information. Arguments as for {@code printf}.
< prev index next >