コード例 #1
0
ファイル: UnsafeRow.java プロジェクト: BeforeRain/spark
 /**
  * Write this UnsafeRow's underlying bytes to the given OutputStream.
  *
  * @param out the stream to write to.
  * @param writeBuffer a byte array for buffering chunks of off-heap data while writing to the
  *     output stream. If this row is backed by an on-heap byte array, then this buffer will not be
  *     used and may be null.
  */
 public void writeToStream(OutputStream out, byte[] writeBuffer) throws IOException {
   if (baseObject instanceof byte[]) {
     int offsetInByteArray = (int) (Platform.BYTE_ARRAY_OFFSET - baseOffset);
     out.write((byte[]) baseObject, offsetInByteArray, sizeInBytes);
   } else {
     int dataRemaining = sizeInBytes;
     long rowReadPosition = baseOffset;
     while (dataRemaining > 0) {
       int toTransfer = Math.min(writeBuffer.length, dataRemaining);
       Platform.copyMemory(
           baseObject, rowReadPosition, writeBuffer, Platform.BYTE_ARRAY_OFFSET, toTransfer);
       out.write(writeBuffer, 0, toTransfer);
       rowReadPosition += toTransfer;
       dataRemaining -= toTransfer;
     }
   }
 }