@Override public int compare( BufferedInputStream lhsStream, BufferedInputStream rhsStream ) { byte[] lhs = lhsStream.getBuffer(); int lhsPos = lhsStream.getPosition(); int lhsLen = readLen( lhs, lhsPos ); lhsStream.skip( lhsLen + 4 ); byte[] rhs = rhsStream.getBuffer(); int rhsPos = rhsStream.getPosition(); int rhsLen = readLen( rhs, rhsPos ); rhsStream.skip( rhsLen + 4 ); return WritableComparator.compareBytes( lhs, lhsPos + 4, lhsLen, rhs, rhsPos + 4, rhsLen ); }
@Override public int compare( BufferedInputStream lhsStream, BufferedInputStream rhsStream ) { byte[] lhs = lhsStream.getBuffer(); int lhsPos = lhsStream.getPosition(); int lhsLen = readLen( lhs, lhsPos ); lhsStream.skip( lhsLen + 4 ); byte[] rhs = rhsStream.getBuffer(); int rhsPos = rhsStream.getPosition(); int rhsLen = readLen( rhs, rhsPos ); rhsStream.skip( rhsLen + 4 ); return WritableComparator.compareBytes( lhs, lhsPos + 4, lhsLen, rhs, rhsPos + 4, rhsLen ); }
@Override public int compare(BufferedInputStream lhs, BufferedInputStream rhs) { if (lhs == null && rhs == null) { return 0; } else if (lhs == null) { return -1; } else if (rhs == null) { return 1; } byte[] lhsBuffer = lhs.getBuffer(); int lhsOff = lhs.getPosition(); int lhsSize = readSize(lhsBuffer, lhsOff); byte[] rhsBuffer = rhs.getBuffer(); int rhsOff = rhs.getPosition(); int rhsSize = readSize(rhsBuffer, rhsOff); //use hadoop's lexicographical byte array ordering int result = compareByteArrays( lhsBuffer, lhsOff + NUM_BYTES_RESERVED_FOR_ARRAY_LENGTH, lhsSize, rhsBuffer, rhsOff + NUM_BYTES_RESERVED_FOR_ARRAY_LENGTH, rhsSize); lhs.skip(lhsSize + NUM_BYTES_RESERVED_FOR_ARRAY_LENGTH); rhs.skip(rhsSize + NUM_BYTES_RESERVED_FOR_ARRAY_LENGTH); return result; }