Servlet::ServletInputStream(3)

NAME
Servlet::ServletInputStream - servlet input stream interface

SYNOPSIS
  my $byte = $stream->read();

  my $numbytes = $stream->read(\$buffer);
  my $numbytes = $stream->read(\$buffer, $offset, $length);

  my $numbytes = $stream->readLine(\$buffer, $offset, $length);

  $stream->skip($numbytes);

  if ($stream->markSupported()) {
      $stream->mark($limit);
      $stream->reset();
  }

  $stream->close();

DESCRIPTION
Provides an input stream for reading binary data from a client request. With some protocols, such as HTTP POST and PUT, the stream can be used to read data sent from the client.

An input stream object is normally retrieved via "getInputStream" in Servlet::ServletRequest.

NOTE: While this is an abstract class in the Java API, the Perl API provides it as an interface. The main difference is that the Perl version has no constructor. Also, it merges the methods declared in java.io.InputStream and javax.servlet.ServletInputStream into a single interface.

METHODS

close()
    Closes the stream and releases any system resources associated with the stream.

    Throws:

    Servlet::Util::IOException
        if an input exception occurs

mark($limit)
    Marks the current position in the stream. A subsequent call to "reset()" repositions the stream at the last marked position so that subsequent reads re-read the same bytes.

    The $limit argument tells the stream to allow that many bytes to be read before the mark position is invalidated. If more than $limit bytes are read, a call to "reset()" will have no effect.

    Parameters:

    $limit
        the maximum number of bytest hat can be read before the marked position becomes invalid

    Throws:

    Servlet::Util::IOException
        if marking is not supported

markSupported()
    Returns true if the stream supports "mark()" and "reset()", or false if it does not.

read()
read(\$buffer, $length)
read(\$buffer, $length, $offset)
    If no arguments are specified, returns the next byte of data from the stream, or undef if no byte is available because the end of the stream has been reached.

    If arguments are specified, reads up to $length bytes from the stream, stores them in $buffer, and returns the number of bytes read (or undef if no bytes are available because the end of the stream has been reached).

    If $offset is specified, the read data is placed $offset bytes from the beginning of $buffer. If $offset is negative, it will be counted backwardsd from the end of the string. If $offset is positive and greater than the length of $buffer, the scalar will be padded to the required size with "\0" bytes before the result of the read is appended.

    Blocks until input data is available, the end of the stream is detected, or an exception is thrown.

    Parameters:

    \$buffer
        a reference to a scalar buffer into which the data is read

    $length
        the maximum number of bytes to read

    $offset
        the location in $buffer where data is written

    Throws:

    Servlet::Util::IOException
        if an input exception occurs

    Servlet::Util::UndefReferenceException
        if $buffer is specified as undef

readLine(\$buffer, $offset, $length)
    Reads the input stream one line at a time. Starting at an offset, reads bytes into the buffer until it reads a certain number of bytes or reaches a newline character, which it reads into the array as well. Returns the number of bytes read, or -1 if it reaches the end of the input stream before reading the maximum number of bytes.

    Parameters:

    $buffer
        a reference to a scalar into which data is read

    $offset
        an integer specifying the byte at which the method begins reading

    $length
        an integer specifying the maximum number of bytes to read

    Throws:

    Servlet::Util::IOException
        if an input exception occurs

reset
    Repositions the stream to the position at the time "mark()" was last called on the stream.

    Throws:

    Servlet::Util::IOException
        if the stream has not been marked, the mark has been invalidated, or marking is not supported

skip($num)
    Skips over and discards $num bytes of data from the stream and returns the number of bytes skipped, or -1 if no bytes were skipped.

    Parameters:

    $num
        the number of bytes to skip

    Throws:

    Servlet::Util::IOException
        if an input exception occurs

SEE ALSO
Servlet::ServletRequest, Servlet::Util::Exception

AUTHOR
Brian Moseley, bcm@maz.org