package org.basex.io.out; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * This server-side class wraps an {@link InputStream} filled by a database * client. The incoming bytes are encoded: * <ul> * <li>{@code 0x00} and {@code 0xFF} are prefixed with {@code 0xFF}</li> * <li>{@code 0x00} is sent to indicate the end of a stream</li> * </ul> * * @author BaseX Team 2005-12, BSD License * @author Christian Gruen */ public final class EncodingOutput extends OutputStream { /** Output stream. */ private final OutputStream os; /** * Constructor. * @param out output stream to be wrapped */ public EncodingOutput(final OutputStream out) { os = out; } @Override public void write(final int b) throws IOException { if(b == 0x00 || (b & 0xFF) == 0xFF) os.write(0xFF); os.write(b); } @Override public void flush() throws IOException { os.flush(); } @Override public void close() throws IOException { os.close(); } }