浏览代码

HADOOP-8244. Improve comments on ByteBufferReadable.read. Contributed by Henry Robinson.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1309625 13f79535-47bb-0310-9956-ffa450edef68
Aaron Myers 13 年之前
父节点
当前提交
8a109ebebb

+ 2 - 0
hadoop-common-project/hadoop-common/CHANGES.txt

@@ -52,6 +52,8 @@ Trunk (unreleased changes)
     HADOOP-7994. Remove getProtocolVersion and getProtocolSignature from the 
     client side translator and server side implementation. (jitendra)
 
+    HADOOP-8244. Improve comments on ByteBufferReadable.read. (Henry Robinson
+    via atm)
 
   BUG FIXES
 

+ 16 - 6
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/ByteBufferReadable.java

@@ -28,18 +28,28 @@ public interface ByteBufferReadable {
   /**
    * Reads up to buf.remaining() bytes into buf. Callers should use
    * buf.limit(..) to control the size of the desired read.
-   *
-   * After the call, buf.position() should be unchanged, and therefore any data
-   * can be immediately read from buf.
-   *
+   * <p/>
+   * After a successful call, buf.position() and buf.limit() should be
+   * unchanged, and therefore any data can be immediately read from buf.
+   * buf.mark() may be cleared or updated.
+   * <p/>
+   * In the case of an exception, the values of buf.position() and buf.limit()
+   * are undefined, and callers should be prepared to recover from this
+   * eventuality.
+   * <p/>
    * Many implementations will throw {@link UnsupportedOperationException}, so
    * callers that are not confident in support for this method from the
    * underlying filesystem should be prepared to handle that exception.
+   * <p/>
+   * Implementations should treat 0-length requests as legitimate, and must not
+   * signal an error upon their receipt.
    *
    * @param buf
-   *          the ByteBuffer to receive the results of the read operation
+   *          the ByteBuffer to receive the results of the read operation. Up to
+   *          buf.limit() - buf.position() bytes may be read.
    * @return the number of bytes available to read from buf
-   * @throws IOException if there is some error performing the read
+   * @throws IOException
+   *           if there is some error performing the read
    */
   public int read(ByteBuffer buf) throws IOException;
 }