public long sendBlock(DataOutputStream out, OutputStream baseStream, 
                 DataTransferThrottler throttler) throws IOException {
    return sendBlock(out, baseStream, throttler, null);
  }
public long sendBlock ( DataOutputStream out , OutputStream baseStream , DataTransferThrottler throttler ) throws IOException { return sendBlock ( out , baseStream , throttler , null ) ; }
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.