/**
 * Stream offset
 *
 * @param   integer  $offset  The starting offset.
 * @param   integer  $whence  SEEK_SET, SEEK_CUR, SEEK_END
 *
 * @return  boolean  True on success.
 *
 * @since   1.7.0
 */
public function stream_seek($offset, $whence)
{
    // $whence: SEEK_SET, SEEK_CUR, SEEK_END
    if ($offset > $this->len) {
        // We can't seek beyond our len.
        return false;
    }
    switch ($whence) {
        case SEEK_SET:
            $this->pos = $offset;
            break;
        case SEEK_CUR:
            if ($this->pos + $offset < $this->len) {
                $this->pos += $offset;
            } else {
                return false;
            }
            break;
        case SEEK_END:
            $this->pos = $this->len - $offset;
            break;
    }
    return true;
}