## org.apache.hadoop.security
Class SaslInputStream

    java.lang.Object
      java.io.InputStream
          org.apache.hadoop.security.SaslInputStream

All Implemented Interfaces:
  Closeable

    public class SaslInputStream

extends InputStream

A SaslInputStream is composed of an InputStream and a SaslServer (or SaslClient) so that read() methods return data that are read in from the underlying InputStream but have been additionally processed by the SaslServer (or SaslClient) object. The SaslServer (or SaslClient) object must be fully initialized before being used by a SaslInputStream.

Field Summary
`static org.apache.commons.logging.Log` `LOG`

Constructor Summary
`SaslInputStream(InputStream inStream, SaslClient saslClient)` Constructs a SASLInputStream from an InputStream and a SaslClient Note: if the specified InputStream or SaslClient is null, a NullPointerException may be thrown later when they are used.
`SaslInputStream(InputStream inStream, SaslServer saslServer)` Constructs a SASLInputStream from an InputStream and a SaslServer Note: if the specified InputStream or SaslServer is null, a NullPointerException may be thrown later when they are used.

Method Summary
`int` `available()` Returns the number of bytes that can be read from this input stream without blocking.
`void` `close()` Closes this input stream and releases any system resources associated with the stream.
`boolean` `markSupported()` Tests if this input stream supports the `mark` and `reset` methods, which it does not.
`int` `read()` Reads the next byte of data from this input stream.
`int` `read(byte[] b)` Reads up to `b.length` bytes of data from this input stream into an array of bytes.
`int` `read(byte[] b, int off, int len)` Reads up to `len` bytes of data from this input stream into an array of bytes.
`long` `skip(long n)` Skips `n` bytes of input from the bytes that can be read from this input stream without blocking.

Methods inherited from class java.io.InputStream
`mark, reset`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### LOG

    public static final org.apache.commons.logging.Log LOG

Constructor Detail

### SaslInputStream

    public SaslInputStream(InputStream inStream,
                           SaslServer saslServer)

  Constructs a SASLInputStream from an InputStream and a SaslServer
  Note: if the specified InputStream or SaslServer is null, a NullPointerException may be thrown later when they are used.

  Parameters:
    `inStream` - the InputStream to be processed
    `saslServer` - an initialized SaslServer object

### SaslInputStream

    public SaslInputStream(InputStream inStream,
                           SaslClient saslClient)

  Constructs a SASLInputStream from an InputStream and a SaslClient
  Note: if the specified InputStream or SaslClient is null, a NullPointerException may be thrown later when they are used.

  Parameters:
    `inStream` - the InputStream to be processed
    `saslClient` - an initialized SaslClient object

Method Detail

### read

    public int read()
             throws IOException

  Reads the next byte of data from this input stream. The value byte is returned as an `int` in the range `0` to `255`. If no byte is available because the end of the stream has been reached, the value `-1` is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

  Specified by:
    `read` in class `InputStream`
  Returns:
    the next byte of data, or `-1` if the end of the stream is reached.
  Throws:
    `IOException` - if an I/O error occurs.

### read

    public int read(byte[] b)
             throws IOException

  Reads up to `b.length` bytes of data from this input stream into an array of bytes.

  The `read` method of `InputStream` calls the `read` method of three arguments with the arguments `b`, `0`, and `b.length`.

  Overrides:
    `read` in class `InputStream`
  Parameters:
    `b` - the buffer into which the data is read.
  Returns:
    the total number of bytes read into the buffer, or `-1` is there is no more data because the end of the stream has been reached.
  Throws:
    `IOException` - if an I/O error occurs.

### read

    public int read(byte[] b,
                    int off,
                    int len)
             throws IOException

  Reads up to `len` bytes of data from this input stream into an array of bytes. This method blocks until some input is available. If the first argument is `null,` up to `len` bytes are read and discarded.

  Overrides:
    `read` in class `InputStream`
  Parameters:
    `b` - the buffer into which the data is read.
    `off` - the start offset of the data.
    `len` - the maximum number of bytes read.
  Returns:
    the total number of bytes read into the buffer, or `-1` if there is no more data because the end of the stream has been reached.
  Throws:
    `IOException` - if an I/O error occurs.

### skip

    public long skip(long n)
              throws IOException

  Skips `n` bytes of input from the bytes that can be read from this input stream without blocking.

  Fewer bytes than requested might be skipped. The actual number of bytes skipped is equal to `n` or the result of a call to ``available``, whichever is smaller. If `n` is less than zero, no bytes are skipped.

  The actual number of bytes skipped is returned.

  Overrides:
    `skip` in class `InputStream`
  Parameters:
    `n` - the number of bytes to be skipped.
  Returns:
    the actual number of bytes skipped.
  Throws:
    `IOException` - if an I/O error occurs.

### available

    public int available()
                  throws IOException

  Returns the number of bytes that can be read from this input stream without blocking. The `available` method of `InputStream` returns `0`. This method should be overridden by subclasses.

  Overrides:
    `available` in class `InputStream`
  Returns:
    the number of bytes that can be read from this input stream without blocking.
  Throws:
    `IOException` - if an I/O error occurs.

### close

    public void close()
               throws IOException

  Closes this input stream and releases any system resources associated with the stream.

  The `close` method of `SASLInputStream` calls the `close` method of its underlying input stream.

  Specified by:
    `close` in interface `Closeable`
  Overrides:
    `close` in class `InputStream`
  Throws:
    `IOException` - if an I/O error occurs.

### markSupported

    public boolean markSupported()

  Tests if this input stream supports the `mark` and `reset` methods, which it does not.

  Overrides:
    `markSupported` in class `InputStream`
  Returns:
    `false`, since this class does not support the `mark` and `reset` methods.

Copyright © 2009 The Apache Software Foundation