Package com.linkedin.alpini.io
Class CompressOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- java.io.FilterOutputStream
-
- com.linkedin.alpini.io.CompressOutputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.io.Flushable
,java.lang.AutoCloseable
public final class CompressOutputStream extends java.io.FilterOutputStream
BackupOutputStream encapsulates an GZip compressor and provides methods to allow other threads to wait upon the completion of the file. However, when an exception occurs, the OutputStream is closed and the GZip compressor is not flushed, which should cut off the trailing footer leaving an invalid gzipped file.
-
-
Constructor Summary
Constructors Constructor Description CompressOutputStream(int compressionLevel, java.util.concurrent.ExecutorService executor, int numThreads, java.io.OutputStream out)
Creates a compressed backup output stream built on top of the specified underlying output stream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
await()
boolean
await(long timeout, java.util.concurrent.TimeUnit unit)
void
close()
Closes this output stream and releases any system resources associated with the stream.void
flush()
Flushes this output stream and forces any buffered output bytes to be written out to the stream.java.io.IOException
setException(java.io.IOException cause)
void
write(byte[] b)
Writesb.length
bytes to this output stream.void
write(byte[] b, int off, int len)
Writeslen
bytes from the specifiedbyte
array starting at offsetoff
to this output stream.void
write(int b)
Writes the specifiedbyte
to this output stream.
-
-
-
Constructor Detail
-
CompressOutputStream
public CompressOutputStream(int compressionLevel, java.util.concurrent.ExecutorService executor, int numThreads, @Nonnull @WillCloseWhenClosed java.io.OutputStream out) throws java.io.IOException
Creates a compressed backup output stream built on top of the specified underlying output stream.- Parameters:
compressionLevel
- the compression level requested.executor
- Thread pool for the parallel compressor.numThreads
- requested compression parallelism.out
- the underlying output stream to be assigned to the field this.out for later use, ornull
if this instance is to be created without an underlying stream.- Throws:
java.io.IOException
-
-
Method Detail
-
write
public void write(int b) throws java.io.IOException
Writes the specifiedbyte
to this output stream.- Overrides:
write
in classjava.io.FilterOutputStream
- Parameters:
b
- thebyte
.- Throws:
java.io.IOException
- if an I/O error occurs.
-
write
public void write(@Nonnull byte[] b) throws java.io.IOException
Writesb.length
bytes to this output stream.- Overrides:
write
in classjava.io.FilterOutputStream
- Parameters:
b
- the data to be written.- Throws:
java.io.IOException
- if an I/O error occurs.
-
write
public void write(@Nonnull byte[] b, int off, int len) throws java.io.IOException
Writeslen
bytes from the specifiedbyte
array starting at offsetoff
to this output stream.- Overrides:
write
in classjava.io.FilterOutputStream
- Parameters:
b
- the data.off
- the start offset in the data.len
- the number of bytes to write.- Throws:
java.io.IOException
- if an I/O error occurs.
-
flush
public void flush() throws java.io.IOException
Flushes this output stream and forces any buffered output bytes to be written out to the stream. Theflush
method ofFilterOutputStream
calls theflush
method of its underlying output stream.- Specified by:
flush
in interfacejava.io.Flushable
- Overrides:
flush
in classjava.io.FilterOutputStream
- Throws:
java.io.IOException
- if an I/O error occurs.- See Also:
FilterOutputStream.out
-
await
public void await() throws java.io.IOException, java.lang.InterruptedException
- Throws:
java.io.IOException
java.lang.InterruptedException
-
await
public boolean await(long timeout, @Nonnull java.util.concurrent.TimeUnit unit) throws java.io.IOException, java.lang.InterruptedException
- Throws:
java.io.IOException
java.lang.InterruptedException
-
close
public void close() throws java.io.IOException
Closes this output stream and releases any system resources associated with the stream.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.FilterOutputStream
- Throws:
java.io.IOException
- if an I/O error occurs.
-
setException
public java.io.IOException setException(@Nonnull java.io.IOException cause)
-
-