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.OutputStream
Multiplexes 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[]
buffer
static int
CH_DATA
Channel used for pack data.static int
CH_ERROR
Channel used for error messages.static int
CH_PROGRESS
Channel used for progress messages.private int
cnt
Number of bytes inbuffer
that are valid data.(package private) static int
HDR_SIZE
static int
MAX_BUF
Maximum buffer size for a single packet of sideband data.private java.io.OutputStream
out
static int
SMALL_BUF
Default 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 void
flush()
(package private) void
flushBuffer()
void
write(byte[] b, int off, int len)
void
write(int b)
private void
writeBuffer()
-
-
-
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:
flush
in interfacejava.io.Flushable
- Overrides:
flush
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
write
public void write(byte[] b, int off, int len) throws java.io.IOException
- Overrides:
write
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
write
public void write(int b) throws java.io.IOException
- Specified by:
write
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
writeBuffer
private void writeBuffer() throws java.io.IOException
- Throws:
java.io.IOException
-
-