Class SaslInputStream

java.lang.Object
java.io.InputStream
org.apache.hadoop.security.SaslInputStream
All Implemented Interfaces:
Closeable, AutoCloseable, Channel, ReadableByteChannel

@LimitedPrivate({"HDFS","MapReduce"}) @Evolving public class SaslInputStream extends InputStream implements ReadableByteChannel
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

    Fields
    Modifier and Type
    Field
    Description
    static final org.slf4j.Logger
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    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

    Modifier and Type
    Method
    Description
    int
    Returns the number of bytes that can be read from this input stream without blocking.
    void
    Closes this input stream and releases any system resources associated with the stream.
    boolean
     
    boolean
    Tests if this input stream supports the mark and reset methods, which it does not.
    int
    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.
    int
     
    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.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • LOG

      public static final org.slf4j.Logger LOG
  • Constructor Details

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

    • 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 AutoCloseable
      Specified by:
      close in interface Channel
      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.
    • isOpen

      public boolean isOpen()
      Specified by:
      isOpen in interface Channel
    • read

      public int read(ByteBuffer dst) throws IOException
      Specified by:
      read in interface ReadableByteChannel
      Throws:
      IOException