net.i2p.sam

## Class SAMStreamSession.StreamSender

- java.lang.Object
- - net.i2p.sam.SAMStreamSession.StreamSender

All Implemented Interfaces:
  Runnable

Direct Known Subclasses:
  SAMStreamSession.v1StreamSender, SAMv2StreamSession.v2StreamSender

Enclosing class:
  SAMStreamSession

    protected class SAMStreamSession.StreamSender
    extends Object
    implements Runnable

Lets us push data through the stream without blocking, (even after exceeding the I2PSocket's buffer)

### Constructor Summary

Constructors
Constructor and Description
`SAMStreamSession.StreamSender(I2PSocket s, int id)`

### Method Summary

Methods
`void` `run()`
`void` `sendBytes(InputStream in, int size)` Send bytes through the SAM STREAM session socket sender
`void` `shutDownGracefully()` Stop a SAM STREAM session socket sender gracefully: stop the sender thread once all pending data has been sent.
`void` `stopRunning()` Stop a SAM STREAM session socket sender thread immediately

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

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

### Constructor Detail

#### SAMStreamSession.StreamSender

    public SAMStreamSession.StreamSender(I2PSocket s,
                                 int id)
                                  throws IOException

Throws:
  `IOException`

### Method Detail

#### sendBytes

    public void sendBytes(InputStream in,
                 int size)
                   throws IOException

Send bytes through the SAM STREAM session socket sender

Parameters:
  `in` - Data input stream
  `size` - Count of bytes to send
Throws:
  `IOException` - if the client didnt provide enough data

#### stopRunning

    public void stopRunning()

Stop a SAM STREAM session socket sender thread immediately

#### shutDownGracefully

    public void shutDownGracefully()

Stop a SAM STREAM session socket sender gracefully: stop the sender thread once all pending data has been sent.

#### run

    public void run()

Specified by:
  `run` in interface `Runnable`