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 Details

    • CH_DATA

      public static final int CH_DATA
      Channel used for pack data.
      See Also:
    • CH_PROGRESS

      public static final int CH_PROGRESS
      Channel used for progress messages.
      See Also:
    • CH_ERROR

      public static final int CH_ERROR
      Channel used for error messages.
      See Also:
    • SMALL_BUF

      public static final int SMALL_BUF
      Default buffer size for a small amount of data.
      See Also:
    • MAX_BUF

      public static final int MAX_BUF
      Maximum buffer size for a single packet of sideband data.
      See Also:
    • HDR_SIZE

      static final int HDR_SIZE
      See Also:
    • out

      private final OutputStream out
    • buffer

      private final byte[] buffer
    • cnt

      private int cnt
      Number of bytes in buffer that are valid data.

      Initialized to HDR_SIZE if there is no application data in the buffer, as the packet header always appears at the start of the buffer.

  • Constructor Details

    • 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 Details