## 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
`SAMStreamSession.StreamSender(I2PSocket s, int id)`

Method Summary
`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`