Package org.eclipse.jgit.transport
Class SideBandOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- org.eclipse.jgit.transport.SideBandOutputStream
-
- All Implemented Interfaces:
java.io.Closeable,java.io.Flushable,java.lang.AutoCloseable
public class SideBandOutputStream extends java.io.OutputStreamMultiplexes data and progress messages.This stream is buffered at packet sizes, so the caller doesn't need to wrap it in yet another buffered stream.
- Since:
- 2.0
-
-
Field Summary
Fields Modifier and Type Field Description private byte[]bufferstatic intCH_DATAChannel used for pack data.static intCH_ERRORChannel used for error messages.static intCH_PROGRESSChannel used for progress messages.private intcntNumber of bytes inbufferthat are valid data.(package private) static intHDR_SIZEstatic intMAX_BUFMaximum buffer size for a single packet of sideband data.private java.io.OutputStreamoutstatic intSMALL_BUFDefault buffer size for a small amount of data.
-
Constructor Summary
Constructors Constructor Description SideBandOutputStream(int chan, int sz, java.io.OutputStream os)Create a new stream to write side band packets.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidflush()(package private) voidflushBuffer()voidwrite(byte[] b, int off, int len)voidwrite(int b)private voidwriteBuffer()
-
-
-
Field Detail
-
CH_DATA
public static final int CH_DATA
Channel used for pack data.- See Also:
- Constant Field Values
-
CH_PROGRESS
public static final int CH_PROGRESS
Channel used for progress messages.- See Also:
- Constant Field Values
-
CH_ERROR
public static final int CH_ERROR
Channel used for error messages.- See Also:
- Constant Field Values
-
SMALL_BUF
public static final int SMALL_BUF
Default buffer size for a small amount of data.- See Also:
- Constant Field Values
-
MAX_BUF
public static final int MAX_BUF
Maximum buffer size for a single packet of sideband data.- See Also:
- Constant Field Values
-
HDR_SIZE
static final int HDR_SIZE
- See Also:
- Constant Field Values
-
out
private final java.io.OutputStream out
-
buffer
private final byte[] buffer
-
cnt
private int cnt
-
-
Constructor Detail
-
SideBandOutputStream
public SideBandOutputStream(int chan, int sz, java.io.OutputStream os)Create a new stream to write side band packets.- Parameters:
chan- channel number to prefix all packets with, so the remote side can demultiplex the stream and get back the original data. Must be in the range [1, 255].sz- maximum size of a data packet within the stream. The remote side needs to agree to the packet size to prevent buffer overflows. Must be in the range [HDR_SIZE + 1, MAX_BUF).os- stream that the packets are written onto. This stream should be attached to a SideBandInputStream on the remote side.
-
-
Method Detail
-
flushBuffer
void flushBuffer() throws java.io.IOException- Throws:
java.io.IOException
-
flush
public void flush() throws java.io.IOException- Specified by:
flushin interfacejava.io.Flushable- Overrides:
flushin classjava.io.OutputStream- Throws:
java.io.IOException
-
write
public void write(byte[] b, int off, int len) throws java.io.IOException- Overrides:
writein classjava.io.OutputStream- Throws:
java.io.IOException
-
write
public void write(int b) throws java.io.IOException- Specified by:
writein classjava.io.OutputStream- Throws:
java.io.IOException
-
writeBuffer
private void writeBuffer() throws java.io.IOException- Throws:
java.io.IOException
-
-