| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.hadoop.hdfs.net; |
| |
| import java.io.Closeable; |
| import java.io.IOException; |
| import java.io.InputStream; |
| import java.io.OutputStream; |
| import java.nio.channels.ReadableByteChannel; |
| import org.apache.hadoop.classification.InterfaceAudience; |
| import org.apache.hadoop.net.unix.DomainSocket; |
| |
| /** |
| * Represents a connection to a peer. |
| */ |
| @InterfaceAudience.Private |
| public interface Peer extends Closeable { |
| /** |
| * @return The input stream channel associated with this |
| * peer, or null if it has none. |
| */ |
| ReadableByteChannel getInputStreamChannel(); |
| |
| /** |
| * Set the read timeout on this peer. |
| * |
| * @param timeoutMs The timeout in milliseconds. |
| */ |
| void setReadTimeout(int timeoutMs) throws IOException; |
| |
| /** |
| * @return The receive buffer size. |
| */ |
| int getReceiveBufferSize() throws IOException; |
| |
| /** |
| * @return True if TCP_NODELAY is turned on. |
| */ |
| boolean getTcpNoDelay() throws IOException; |
| |
| /** |
| * Set the write timeout on this peer. |
| * |
| * Note: this is not honored for BasicInetPeer. |
| * See {@link BasicInetPeer#setWriteTimeout} for details. |
| * |
| * @param timeoutMs The timeout in milliseconds. |
| */ |
| void setWriteTimeout(int timeoutMs) throws IOException; |
| |
| /** |
| * @return true only if the peer is closed. |
| */ |
| boolean isClosed(); |
| |
| /** |
| * Close the peer. |
| * |
| * It's safe to re-close a Peer that is already closed. |
| */ |
| void close() throws IOException; |
| |
| /** |
| * @return A string representing the remote end of our |
| * connection to the peer. |
| */ |
| String getRemoteAddressString(); |
| |
| /** |
| * @return A string representing the local end of our |
| * connection to the peer. |
| */ |
| String getLocalAddressString(); |
| |
| /** |
| * @return An InputStream associated with the Peer. |
| * This InputStream will be valid until you close |
| * this peer with Peer#close. |
| */ |
| InputStream getInputStream() throws IOException; |
| |
| /** |
| * @return An OutputStream associated with the Peer. |
| * This OutputStream will be valid until you close |
| * this peer with Peer#close. |
| */ |
| OutputStream getOutputStream() throws IOException; |
| |
| /** |
| * @return True if the peer resides on the same |
| * computer as we. |
| */ |
| boolean isLocal(); |
| |
| /** |
| * @return The DomainSocket associated with the current |
| * peer, or null if there is none. |
| */ |
| DomainSocket getDomainSocket(); |
| |
| /** |
| * Return true if the channel is secure. |
| * |
| * @return True if our channel to this peer is not |
| * susceptible to man-in-the-middle attacks. |
| */ |
| boolean hasSecureChannel(); |
| } |