code: protected void afterRead(ByteBuffer buffer, int position, int length) throws IOException {
          try {
              for (ChannelFunction func : functions) {
                  func.afterRead(buffer, position, length);
              }
              if (isComplete()) {
                  checkComplete();
              }
          } catch (UnsupportedEncodingException e) {
              getFramedChannel().markReadsBroken(e);
              throw e;
          }
      }
docs: Called after data was read into the {@link ByteBuffer}
  
  @param buffer   the {@link ByteBuffer} into which the data was read
  @param position the position it was written to
  @param length   the number of bytes there were written
  @throws IOException thrown if an error occurs