org.apache.cassandra.streaming

## Class StreamWriter

- java.lang.Object
- - org.apache.cassandra.streaming.StreamWriter

Direct Known Subclasses:
  CompressedStreamWriter

    public class StreamWriter
    extends java.lang.Object

StreamWriter writes given section of the SSTable to given channel.

### Field Summary

Fields
`protected StreamManager.StreamRateLimiter` `limiter`
`protected java.util.Collection<Pair<java.lang.Long,java.lang.Long>>` `sections`
`protected StreamSession` `session`
`protected SSTableReader` `sstable`

### Constructor Summary

Constructors
Constructor and Description
`StreamWriter(SSTableReader sstable, java.util.Collection<Pair<java.lang.Long,java.lang.Long>> sections, StreamSession session)`

### Method Summary

All Methods Instance Methods Concrete Methods
`protected long` `totalSize()`
`void` `write(DataOutputStreamPlus output)` Stream file of specified sections to given channel.
`protected long` `write(RandomAccessReader reader, DataIntegrityMetadata.ChecksumValidator validator, int start, long length, long bytesTransferred)` Sequentially read bytes from the file and write them to the output stream

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

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

### Field Detail

#### sstable

    protected final SSTableReader sstable

#### sections

    protected final java.util.Collection<Pair<java.lang.Long,java.lang.Long>> sections

#### limiter

    protected final StreamManager.StreamRateLimiter limiter

#### session

    protected final StreamSession session

### Constructor Detail

#### StreamWriter

    public StreamWriter(SSTableReader sstable,
                        java.util.Collection<Pair<java.lang.Long,java.lang.Long>> sections,
                        StreamSession session)

### Method Detail

#### write

    public void write(DataOutputStreamPlus output)
               throws java.io.IOException

Stream file of specified sections to given channel. StreamWriter uses LZF compression on wire to decrease size to transfer.

Parameters:
  `output` - where this writes data to
Throws:
  `java.io.IOException` - on any I/O error

#### totalSize

    protected long totalSize()

#### write

    protected long write(RandomAccessReader reader,
                         DataIntegrityMetadata.ChecksumValidator validator,
                         int start,
                         long length,
                         long bytesTransferred)
                  throws java.io.IOException

Sequentially read bytes from the file and write them to the output stream

Parameters:
  `reader` - The file reader to read from
  `validator` - validator to verify data integrity
  `start` - number of bytes to skip transfer, but include for validation.
  `length` - The full length that should be read from `reader`
  `bytesTransferred` - Number of bytes already read out of `length`
Returns:
  Number of bytes read
Throws:
  `java.io.IOException` - on any I/O error