All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.glassfish.grizzly.InputSource Maven / Gradle / Ivy

There is a newer version: 4.0.2
Show newest version
/*
 * Copyright (c) 2010, 2017 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package org.glassfish.grizzly;

import java.io.InputStream;
import java.io.Reader;

/**
 * 

* This interface defines methods to allow an {@link InputStream} or * {@link Reader} to notify the developer when and how much * data is ready to be read without blocking. *

* * @since 2.0 */ public interface InputSource { /** *

* Notify the specified {@link ReadHandler} when any number of bytes or * characters can be read without blocking. *

* *

* Invoking this method is equivalent to calling: notifyAvailable(handler, 1). *

* * @param handler the {@link ReadHandler} to notify. * * @throws IllegalArgumentException if handler is null. * @throws IllegalStateException if an attempt is made to register a handler * before an existing registered handler has been invoked or if all request * data has already been read. * * @see ReadHandler#onDataAvailable() * @see ReadHandler#onAllDataRead() */ void notifyAvailable(final ReadHandler handler); /** *

* Notify the specified {@link ReadHandler} when the number of bytes that * can be read without blocking is greater or equal to the specified * size. *

* * @param handler the {@link ReadHandler} to notify. * @param size the least number of bytes that must be available before * the {@link ReadHandler} is invoked. * * @throws IllegalArgumentException if handler is null, * or if size is less or equal to zero. * @throws IllegalStateException if an attempt is made to register a handler * before an existing registered handler has been invoked or if all request * data has already been read. * * @see ReadHandler#onDataAvailable() * @see ReadHandler#onAllDataRead() */ void notifyAvailable(final ReadHandler handler, final int size); /** * @return true when all data for this particular request * has been read, otherwise returns false. */ boolean isFinished(); /** * @return the number of bytes (or characters) that may be obtained * without blocking. Note when dealing with characters, this method * may return an estimate on the number of characters available. */ int readyData(); /** * @return true if data can be obtained without blocking, * otherwise returns false. */ boolean isReady(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy