code: public long sendBlock(DataOutputStream out, OutputStream baseStream, 
                   DataTransferThrottler throttler) throws IOException {
      return sendBlock(out, baseStream, throttler, null);
    }
docs: sendBlock() is used to read block and its metadata and stream the data to
  either a client or to another datanode.
  
  @param out  stream to which the block is written to
  @param baseStream optional. if non-null, <code>out</code> is assumed to
  be a wrapper over this stream. This enables optimizations for
  sending the data, e.g.
  {@link SocketOutputStream#transferToFully(FileChannel,
  long, int)}.
  @param throttler for sending data.
  @return total bytes reads, including crc.