public CRC32CDigestManager(long ledgerId, boolean useV2Protocol, ByteBufAllocator allocator) { super(ledgerId, useV2Protocol, allocator); if (!Sse42Crc32C.isSupported()) { log.error("Sse42Crc32C is not supported, will use a slower CRC32C implementation."); } }
@Override protected StatelessHash createCacheable(HashParameters params, EnumSet<HashSupport> required) { return new Sse42Crc32C(DEFAULT_CHUNK); } }
public Sse42Crc32C(int chunkWords[]) { if (chunkWords.length == 0) { config = 0; } else { config = allocConfig(chunkWords); if (config == 0) throw new RuntimeException("CRC32C configuration allocation failed"); } }
@Override public int calculate(long address, long length) { return nativeUnsafe(initial(), address, length, config); }
private static boolean checkSupported() { try { loadLibraryFromJar("/lib/libpulsar-checksum." + libType()); return nativeSupported(); } catch (final Exception | UnsatisfiedLinkError e) { return false; } }
@Override public int resume(int current, ByteBuffer input) { if (input.isDirect()) { final int result = nativeDirectBuffer(current, input, input.position(), input.remaining(), config); input.position(input.limit()); return result; } return super.resume(current, input); }
@Override protected void finalize() { if (config != 0) freeConfig(config); }
@Override public int resume(int current, long address, long length) { return nativeUnsafe(current, address, length, config); }
@Override protected int resumeUnchecked(int current, byte[] input, int index, int length) { return nativeArray(current, input, index, length, config); }
@Override public int calculate(long address, long length) { return nativeUnsafe(initial(), address, length, config); }
private static boolean checkSupported() { try { loadLibraryFromJar("/lib/libpulsar-checksum." + libType()); return nativeSupported(); } catch (final Exception | UnsatisfiedLinkError e) { return false; } }
@Override public int resume(int current, ByteBuffer input) { if (input.isDirect()) { final int result = nativeDirectBuffer(current, input, input.position(), input.remaining(), config); input.position(input.limit()); return result; } return super.resume(current, input); }
@Override protected void finalize() { if (config != 0) freeConfig(config); }
@Override public int resume(int current, long address, long length) { return nativeUnsafe(current, address, length, config); }
@Override protected int resumeUnchecked(int current, byte[] input, int index, int length) { return nativeArray(current, input, index, length, config); }
@Override protected EnumSet<HashSupport> querySupportTyped(HashParameters params) { if (isCrc32C(params) && Sse42Crc32C.isSupported()) return EnumSet.allOf(HashSupport.class); return EnumSet.noneOf(HashSupport.class); }
@Override public int calculate(long address, long length) { return nativeUnsafe(initial(), address, length, config); }
@Override protected StatelessHash createCacheable(HashParameters params, EnumSet<HashSupport> required) { return new Sse42Crc32C(DEFAULT_CHUNK); } }
private static boolean checkSupported() { try { loadLibraryFromJar("/lib/libcirce-checksum." + libType()); return nativeSupported(); } catch (final Exception | UnsatisfiedLinkError e) { return false; } }
public Sse42Crc32C(int chunkWords[]) { if (chunkWords.length == 0) { config = 0; } else { config = allocConfig(chunkWords); if (config == 0) throw new RuntimeException("CRC32C configuration allocation failed"); } }