Mercurial Hosting > luan
diff src/org/eclipse/jetty/io/EndPoint.java @ 802:3428c60d7cfc
replace jetty jars with source
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 07 Sep 2016 21:15:48 -0600 |
parents | |
children | bdb6eb0fbf93 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/org/eclipse/jetty/io/EndPoint.java Wed Sep 07 21:15:48 2016 -0600 @@ -0,0 +1,175 @@ +// +// ======================================================================== +// Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package org.eclipse.jetty.io; + +import java.io.IOException; + + +/** + * + * A transport EndPoint + */ +public interface EndPoint +{ + /** + * Shutdown any backing output stream associated with the endpoint + */ + void shutdownOutput() throws IOException; + + boolean isOutputShutdown(); + + /** + * Shutdown any backing input stream associated with the endpoint + */ + void shutdownInput() throws IOException; + + boolean isInputShutdown(); + + /** + * Close any backing stream associated with the endpoint + */ + void close() throws IOException; + + /** + * Fill the buffer from the current putIndex to it's capacity from whatever + * byte source is backing the buffer. The putIndex is increased if bytes filled. + * The buffer may chose to do a compact before filling. + * @return an <code>int</code> value indicating the number of bytes + * filled or -1 if EOF is reached. + * @throws EofException If input is shutdown or the endpoint is closed. + */ + int fill(Buffer buffer) throws IOException; + + + /** + * Flush the buffer from the current getIndex to it's putIndex using whatever byte + * sink is backing the buffer. The getIndex is updated with the number of bytes flushed. + * Any mark set is cleared. + * If the entire contents of the buffer are flushed, then an implicit empty() is done. + * + * @param buffer The buffer to flush. This buffers getIndex is updated. + * @return the number of bytes written + * @throws EofException If the endpoint is closed or output is shutdown. + */ + int flush(Buffer buffer) throws IOException; + + /** + * Flush the buffer from the current getIndex to it's putIndex using whatever byte + * sink is backing the buffer. The getIndex is updated with the number of bytes flushed. + * Any mark set is cleared. + * If the entire contents of the buffer are flushed, then an implicit empty() is done. + * The passed header/trailer buffers are written before/after the contents of this buffer. This may be done + * either as gather writes, as a poke into this buffer or as several writes. The implementation is free to + * select the optimal mechanism. + * @param header A buffer to write before flushing this buffer. This buffers getIndex is updated. + * @param buffer The buffer to flush. This buffers getIndex is updated. + * @param trailer A buffer to write after flushing this buffer. This buffers getIndex is updated. + * @return the total number of bytes written. + */ + int flush(Buffer header, Buffer buffer, Buffer trailer) throws IOException; + + + /* ------------------------------------------------------------ */ + /** + * @return The local IP address to which this <code>EndPoint</code> is bound, or <code>null</code> + * if this <code>EndPoint</code> does not represent a network connection. + */ + public String getLocalAddr(); + + /* ------------------------------------------------------------ */ + /** + * @return The local host name to which this <code>EndPoint</code> is bound, or <code>null</code> + * if this <code>EndPoint</code> does not represent a network connection. + */ + public String getLocalHost(); + + /* ------------------------------------------------------------ */ + /** + * @return The local port number on which this <code>EndPoint</code> is listening, or <code>0</code> + * if this <code>EndPoint</code> does not represent a network connection. + */ + public int getLocalPort(); + + /* ------------------------------------------------------------ */ + /** + * @return The remote IP address to which this <code>EndPoint</code> is connected, or <code>null</code> + * if this <code>EndPoint</code> does not represent a network connection. + */ + public String getRemoteAddr(); + + /* ------------------------------------------------------------ */ + /** + * @return The host name of the remote machine to which this <code>EndPoint</code> is connected, or <code>null</code> + * if this <code>EndPoint</code> does not represent a network connection. + */ + public String getRemoteHost(); + + /* ------------------------------------------------------------ */ + /** + * @return The remote port number to which this <code>EndPoint</code> is connected, or <code>0</code> + * if this <code>EndPoint</code> does not represent a network connection. + */ + public int getRemotePort(); + + /* ------------------------------------------------------------ */ + public boolean isBlocking(); + + /* ------------------------------------------------------------ */ + public boolean blockReadable(long millisecs) throws IOException; + + /* ------------------------------------------------------------ */ + public boolean blockWritable(long millisecs) throws IOException; + + /* ------------------------------------------------------------ */ + public boolean isOpen(); + + /* ------------------------------------------------------------ */ + /** + * @return The underlying transport object (socket, channel, etc.) + */ + public Object getTransport(); + + /* ------------------------------------------------------------ */ + /** Flush any buffered output. + * May fail to write all data if endpoint is non-blocking + * @throws EofException If the endpoint is closed or output is shutdown. + */ + public void flush() throws IOException; + + /* ------------------------------------------------------------ */ + /** Get the max idle time in ms. + * <p>The max idle time is the time the endpoint can be idle before + * extraordinary handling takes place. This loosely corresponds to + * the {@link java.net.Socket#getSoTimeout()} for blocking connections, + * but {@link AsyncEndPoint} implementations must use other mechanisms + * to implement the max idle time. + * @return the max idle time in ms or if ms <= 0 implies an infinite timeout + */ + public int getMaxIdleTime(); + + /* ------------------------------------------------------------ */ + /** Set the max idle time. + * @param timeMs the max idle time in MS. Timeout <= 0 implies an infinite timeout + * @throws IOException if the timeout cannot be set. + */ + public void setMaxIdleTime(int timeMs) throws IOException; + + + +}