Package org.eclipse.jgit.transport

## Class SideBandOutputStream

- java.lang.Object
- - java.io.OutputStream
  - - org.eclipse.jgit.transport.SideBandOutputStream

All Implemented Interfaces:
  `Closeable`, `Flushable`, `AutoCloseable`

    public class SideBandOutputStream
    extends 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
`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.
`static int` `MAX_BUF` Maximum buffer size for a single packet of sideband data.
`static int` `SMALL_BUF` Default buffer size for a small amount of data.

### Constructor Summary

Constructors
`SideBandOutputStream​(int chan, int sz, OutputStream os)` Create a new stream to write side band packets.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `flush()`
`void` `write​(byte[] b, int off, int len)`
`void` `write​(int b)`

### Methods inherited from class java.io.OutputStream

`close, nullOutputStream, write`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### 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

### Constructor Detail

#### SideBandOutputStream

    public SideBandOutputStream​(int chan,
                                int sz,
                                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

#### flush

    public void flush()
               throws IOException

Specified by:
  `flush` in interface `Flushable`
Overrides:
  `flush` in class `OutputStream`
Throws:
  `IOException`

#### write

    public void write​(byte[] b,
                      int off,
                      int len)
               throws IOException

Overrides:
  `write` in class `OutputStream`
Throws:
  `IOException`

#### write

    public void write​(int b)
               throws IOException

Specified by:
  `write` in class `OutputStream`
Throws:
  `IOException`